운영체제는 컴퓨터 하드웨어와 사용자 사이에 위치하며 하드웨어와 소프트웨어 자원을 관리하는 프로그램이다. 1) 프로세서 컴퓨터 각 부분의 동작을 제어하고 연산을 수행한다. 중앙처리장치( = CPU ) 라고도 한다. 2) 버스 각 장치 간 또는 서브시스템을 서로 연결하여 정보(데이터)를 주고받을 수 있게 해주는 통로이다. 버스는 위치에 따라 내부버스와 외부버스로 분류한다. 버스는 기능에 따라 데이터 버스, 주소 버스, 제어 버스로 분류한다. 3) 레지스터 프로세서에 위치한 고속메모리로 프로세서가 바로 사용할 수 있는 데이터를 담는다. 저장되는 정보의 종류에 따라 데이터 레지스터, 주소 레지스터로 나뉠수 있다. 사용자가 저장한 정보를 변경할 수 있는지 여부에 따라 사용자 가시 레지스터(User-Visible ..
1. 병행프로세스 프로세스 여러 개가 동시에 실행되면 병행 프로세스라고 부른다. 병행 프로세스들은 제한된 자원을 공유하기 위해 자주 상호작용한다. 상호작용하는 프로세스는 순서에 맞게 실행되도록 동기화 시켜야 한다. 다중 프로세싱 시스템에서는 프로세서들이 동일한 자원에 접근할 경우 충돌이 발생할 수 있다. 따라서 프로세서 간의 충돌을 해결해주는 프로세스 동기화 알고리즘이 필요하다. (선행그래프) 2. 상호배제와 동기화 특정 공유자원을 한 순간에 한 개의 프로세스만 사용할 수 있다고 했을 때, 프로세스 하나가 공유 데이터에 접근하는 동안 다른 프로세스가 해당 데이터를 접근할 수 없게 하는 것을 상호배제(Mutual Exclusion) 라 한다. 공유자원을 동시에 사용하지 못하게 실행을 제어하는 기법을 프로세..
6. 문맥교환 인터럽트는 현재 실행되는 프로세스와 별도로 외부에서 발생되는 여러 종류의 이벤트(예를들면 입출력 동작의 종료)에 의해 발생한다. 트랩은 소프트웨어가 발생시키는 메세지이지만 인터럽트는 하드웨어가 발생시키는 메세지입니다. 트랩은 부적절한 파일 접근이나 현재 실행중인 프로세스에 의해 발생되는 오류나 예외 상황 때문에 발생한다. 인터럽트의에는 대표적으로 입출력 인터럽트, 클록 인터럽트가 있다. 입출력 인터럽트 : 입출력 동작이 발생한 사실을 확인 후 이벤트를 기다리는 프로세스를 준비상태로 바꾸고 실행할 프로세스를 결정한다. 클록 인터럽트 : 현지 실행 중인 프로세스의 할당 시간을 조사하여 실행 중인 프로세스를 준비상태로 바꾸고 다른 프로세스를 디스패치하여 실행 상태로 바꾼다. 프로세스를 다른 프로..
1. 프로세스 개요 1-1. 프로세스 개념 프로세스는 '실행 중인 프로그램'이다. 여기서 실행중인 프로그램이란 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태를 말한다. 다시말해, 해당 프로세스가 사용하고 있는 메모리 영역이 존재함을 의미한다. 프로세스는 메모리에 아래와 같은 주소 공간을 갖는 능동적인 개체다. 프로세스 주소 공간의 각 영역 실행스택(Stack) : 호출된 프로시저(함수)의 복귀 주소와 지역 변수처럼 일시적인 데이터를 저장하는 영역 실행 힙(Heap) : 프로그램 실행 중 시스템 호출을 통해 사용되다가 해지되는 등 자유자재로 사용할 수 있다. 데이터(정적 변수) : 프로세스 실행 중에 동적으로 할당받는 영역으로 전역 또는 정적 변..
1. 운영체제의 역할과 목적 사용자에게 편리한 환경 제공(편리성) 시스템 성능 향상(처리능력 향상, 신뢰도 향상, 응답 시간 단축) 4. 운영체제의 기능 1. 자원관리 기능 메모리 관리 : 메모리는 메인메모리와 보조기억장치로 구분한다. 메인메모리는 일반적으로 프로세서가 직접 주소로 지정할 수 있는 유일한 메모리다. 보조기억장치 관리 메인메모리는 공간이 제한적이라 모든 데이터와 프로그램을 계속 저장할 수 없기 때문에 컴퓨터 시스템은 보조기억장치를 이용해 메인 메모리의 내용을 저장한다. 5. 운영체제 서비스 1) 부트스트래핑 서비스 운영체제가 적재되는 과정을 부트스트래핑 또는 부팅 이라고한다. 부트스트랩 로더의 목적은 운영체제를 적재하는 것이다. 2) 시스템 호출 서비스 시스템 호출(System Call)은..
1. 컴퓨터 시스템의 동작과정 입력장치를 통해 정보를 입력받아 메모리에 저장한다. 메모리에 저장한 정보를 프로그램의 제어에 따라 인출하여 산술장치나 논리장치에서 처리한다. 처리한 정보를 출력장치에 표시하거나 디스크에 저장한다. 2.명령어의 구성 명령어는 프로세서가 실행할 연산을 나타내는 연산코드와 명령어가 처리할 데이터나 데이터가 저장된 주소에 관한 정보(레지스터, 메모리)를 기술하는 오퍼랜드로 이루어진다. 연산코드는 실행할 연산(동작)을 지정, 명령어 구성, 데이터 종류 등을 나타낸다. 오퍼랜드는 명렁어가 처리할 데이터나 데이터가 저장된 주소에 관한 정보(레지스터,메모리)를 표시한다. 즉, 프로그래밍에 있어서 연산 대상이 되는 값이나 변수를 지칭하는 말이다. 3. 명렁어 실행 인출 사이클 명렁어 실행 ..