운영체제가 관리하는 최소 단위의 작업
프로세스(Process)는 일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 운영체제가 관리하는 최소 단위의 작업(Job), 태스크(Task)이다.
쉽게 말해서 운영체제가 관리하는 가장 작은 단위의 작업
프로세스는 다양하게 정의 될 수 있으며 아래와 같다.
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체
- 프로시저 1가 활동중인 것
- 비동기적 행위 2를 일으키는 주체
- 목적 또는 결과에 따라 발생되는 사건들의 과정
위의 정의에서 PCB는 무엇일까??
PCB(Process Control Block, 프로세스 제어 블록)는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로, Task Control Block 또는 Job Control Block이라고도 한다. 쉽게 말해서 프로세스 관련 자료가 있는 장소이다.
각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다.
PCB에 있는 정보는 다음과 같다.
저장 정보 | 설 명 |
프로세스의 현재 상태 | 준비, 대기, 실행 등의 프로세스 상태 |
포인터 | - 부모 프로세스에 대한 포인터 : 부모 프로세스의 주소 기억 - 자식 프로세스에 대한 포인터 : 자식 프로세스의 주소 기억 - 프로세스가 위치한 메모리에 대한 포인터 : 현재 프로세스가 위치한 주소 기억 - 할당된 자원에 대한 포인터 : 프로세스에 할당된 각 자원에 대한 주소 기억 |
프로세스 고유 식별자 | 프로세스를 구분할 수 있는 고유의 번호 |
스케줄링 및 프로세스의 우선순위 | 스케줄링 정보 및 프로세스가 실행될 우선순위 |
CPU 레지스터 정보 | Accumulator, Index Register, 범용 레지스터, PC등에 대한 정보 |
주기억장치 관리 정보 | |
입,출력 상태 정보 | 입,출력장치, 개방된 파일 목록 |
계정 정보 | CPU 사용 시간, 실제 사용 시간, 한정된 시간 |
이젠 프로세스 상태 전이에 대해서 살펴보자.
프로세스 상태 전이는 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미하며, 프로세스의 상태를 다음과 같이 상태 전이도로 표시할 수 있다.
프로세스 상태
프로세스의 상태는 제출, 접수, 준비, 실행, 대기(보류) 상태로 나눌 수 있으며, 이 중 주요 세 가지 상태는 준비, 실행, 대기 상태이다.
1)제출(Submit): 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
2)접수(Hold): 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
3)준비(Ready): 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
※ 프로세스는 준비상태 큐에서 실행을 준비하고 있다. 4
접수 상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행된다.
준비 리스트에 있는 프로세스는 각각 우선순위가 주어진다.
4)실행(Run): 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
※ 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 프로세스는 준비 상태로 전이된다. 5
실행중인 프로세스에 입출력 처리가 필요하면 실행중인 프로세스는 대기중인 상태로 전이된다.
준비 상태에서 실행 상태로의 전이는 CPU스케줄러에 의해 수행된다.
5)대기(Wait), 보류, 블록(Block): 프로세스에 입,출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입,출력 처리가 완료될 때까지 대기하고 있는 상태
※ 대기 리스트에 있는 프로세스는 우선순위가 주어지지 않는다.
6)완료(Complete): 프로세서를 할당받아 주어진 시간 안에 수행을 완료한 상태
-------------------------------------------------------------------------------------------------------------
참고로 실행 중지(Suspend)에 관하여 잠시 설명해보면 다음과 같다.
- 하나의 프로세스가 입,출력 이외의 다른 이유에 의해 실행되지 못하는 상태
- 실행 중지된 프로세스는 다른 프로세스도 다시 시작하기 전까지는 실행될 수 없다.
- 프로세스의 실행 중지 요인:
2) 프로세스의 이상 유무를 확인하기 위해 해당 프로세스를 완전히 종료시키지 않고 중지시킨다.
------------------------------------------------------------------------------------------------------------
다음으로 프로세스 상태 전이 관련 용어에 대하여 설명해 보겠다.
※ Dispatch: 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정을 말한다.
Wake Up: 입,출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Traffic Controller(교통량 제어기): 프로세스의 상태에 대한 조사와 통보 담당
지금까지 프로세스에 대해서 설명해 보았고 이제는 스레드(Thread)에 대해서 설명해본다
스레드(Thread)는 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위이다.
어떤 자료들을 보기 전에 하나의 운영체제엔 여러가지 프로그램이 존재할것이다. 프로그램은 단일 프로세스로 존재할 수도 있고 여러개의 프로세스로 존재 할 수도 있다. 그리고 그 프로세스 내에는 여러개의 스레드가 존재할 수도 있다.
운영체제 - 프로세스 - 스레드 이렇게 상위 개념과 하위 개념으로 이해할 수 있는데, 위로 올라갈 수록 보안 장벽이 높다. 그래서 특정 기술들을 사용해야 서로간의 접근이 허용된다.
다시 스레드로 넘어가보면 스레드를 아래와 같이 설명할 수 있다.
1) 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 해.
2) 프로세스의 일부 특성을 갖고 있기 때문에 경량(Light Weight) 프로세스라고도 한다.
3) 자신만의 스택(Stack)과 레지스터(Register)를 갖으며 독립된 제어 흐름을 갖는다.
4) 스레드의 분류
사용자 수준의 스레드 | 사용자가 만든 라이브러리를 사용하여 스레드를 운용한다. 속도는 빠르지만 구현이 어렵다. |
커널 수준의 스레드 | 운영체제의 커널에 의해 스레드를 운용한다. 구현이 쉽지만 속도가 느리다. |
5) 스레드 사용의 장점
- 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성을 증진시킬 수 있다.
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있다.
- 응용 프로그램의 응답 시간(Response Time)을 단축시킬 수 있다.
- 실행 환경을 공유시켜 기억장소의 낭비가 줄어든다.
- 프로세스들 간의 통신이 향상된다.
- 프로시저:한 프로그램은 여러 개의 작은 프로그램으로때 분활된 작은 프로그램을 의미하며, 부프로그램이라고도 한다. [본문으로]
- 다수의 프로세스가 서로 규칙적이거나 연속적이지 ㅇ낳고 독립적으로 실행되는 것. [본문으로]
- 기준레지스터 : 주기억장치가 분할된 영역으로 나뉘어 관리될 때, 프로그램이 한 영역에서 다른 영역으로 옮겨지더라도 명령의 주소 부분을 바꾸지 않고 정상적으로 수행될 수 있도록 하기 위한 레지스터 [본문으로]
- 스케줄링 큐 : 여러 프로세스가 프로세서를 할당받기 위해 기다리는 장소 [본문으로]
- Timer Run Out [본문으로]
'중도연재종료 > 임베디드' 카테고리의 다른 글
[용어] 운영체제(추가) (0) | 2012.07.01 |
---|---|
[용어] 운영체제 (0) | 2012.07.01 |
[용어] Firmware, RTOS, Non-RTOS (0) | 2012.07.01 |
[용어] 실시간 시스템 (0) | 2012.07.01 |
MPU와 MCU (0) | 2012.07.01 |