-
Chapter 3: Processesos 2020. 9. 16. 12:38
Operating System에서는 다양한 프로그램을 실행시킨다.
Process, jobs(tasks)는 거의 같은 의미로 사용된다.
Process
Process는 실행중인 프로그램, 실행중인 Process의 실행은 순차적으로 진행되어야 한다
특징
- 프로그램 코드는 text section이라고 한다.
- processor registers중에 program counter는 다음에 실행될 명령어를 가지고 있다.
- stack에는 일시적인 데이터가 들어있다.( Function parameters, return addresses, local variables)
- 실행 시간 동안 동적 할당 메모리를 포함하는 heap
- 전역 변수를 포함하는 data section
Program은 소극적이고, process는 활동적인이다
Process in Memory Process State
process를 실행 중일 때는, 5가지의 state(상태)가 있다
- New: The process is being created
- Running: Instructions are being executed
- Waiting: The process is waiting for some event to occur
- ready: The process is waiting to be assigned to a processor
- terminated: The process has finished execution
Diagram of Process State Process Control Block (PCB)
각 process의 관련된 정보(PCB)
-
Process state – running, waiting, etc
-
Program counter(number) – 다음에 실행할 명령의 위치
-
CPU registers – contents(내용) of all process-centric registers
-
CPU scheduling information- priorities, scheduling queue pointers
-
Memory-management information – memory allocated to the process
-
Accounting information – CPU used, clock time elapsed since start, time limits
-
I/O status information – I/O devices allocated to process, list of open files
also called task control block
CPU Switch From Process to Process
P0와 P1 process가 있을 때, 실행하는 방법 Threads
하나의 process를 작은 단위로 나눈 것 -> thread
Process Scheduling
CPU에서 다음에 실행할 사용가능한 프로세스를 선택하게 하는 것이다.
Maintains scheduling queues of processes
- job queue: 시스템의 모든 process들이 상주해있다.(시스템과 하드메모리 사이에 상주)
- Ready queue: (ready and waiting to execute)인 메인메모리 안에 상주하는 모든 프로세스들이다.(메모리와 CPU 사이에 있다)
- Device queue: I/O device(장치)를 기다리는 프로세스가 상주해있다. (메모리와 장치 사이에 있다.)
Ready Queue And Various I/O Device Queues
PCB는 정보를 담았기에, 크기가 작다. 그래서 head에 담을 수 있다. Schedulers
Short-term(짧은 시간) scheduler (or CPU scheduler) ->실행할 프로세스를 정하고, CPU에서 할당한다
- Short-term scheduler가 자주 호출된다. -> 매우 빠르다.
Long-term scheduler (or job scheduler) ->ready queue에서 들어갈 process들을 선택한다(디스크에서 메모리에 갈 때 사용된다)
- Long-term scheduler는 호출이 short-term보다 덜 일어난다. -> 느리다.
- long-term scheduler은 degree of multiprogramming(프로세스의 개수) 컨트롤 한다
process는 2가지로 볼 수 있다.
- I/O-bound process : computation보다 I/O 작업에 더 많은 시간을 보낸다. CPU bursts가 많이 짧다.
- CPU-bound process: computation 작업에 많은 시간을 보낸다. CPU bursts가 적고 길다.
(CPU brusts: 프로세스의 사용중에 연속적으로 CPU를 사용하는 단절된 구간)
Medium-term scheduler
- Long-tern과 short-term을 사용한다.
- swapping: 메모리의 공간이 부족해, 다른 저장장치를 이용해서, 프로세스를 실행 시키는 것이다.
Multitasking in Mobile Systems
안드로이드 보다 IOS는 프로세스 실행이 제안되어있다.
- user interface를 통해서 Single foreground process를 컨트롤한다. (1개의 프로세스만 사용할 수 있다.)
- Multiple background processes들은 display에 없어도, 메모리에 실행된다. 다만, 한계가 있다.(여러개의 프로세스를 돌릴 수 있다. 예, 음악을 들으면서 게임을 한다. 하지만 음악 플레이어는 화면에 나오지 않지만, 계속 음악은 들린다.)
- 안드로이드는 IOS 보다 적은 제안을 가지고 foreground와 background를 실행한다.
Context Switch
- 프로세서가 다른 프로세스로 스위치할 때, 시스템은 작업중이던 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 로드한다.
- 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정
- PCB에 나타난 process의 상태이다.
Context Switch 시간은 overhead이다. 시스템은 적업이 전환되는 동안 작업을 수행하지 않는다.
Operations on Processes
- process creation,
- process termination(종료),
- and so on as detailed next
Process Creation
- Parent process는 children processes를 만든다. 즉, 다른 프로세스를 만들어서, 프로세스 트리를 형성한다.
- 보통, 프로세스는 process iedntifier(pid: 이이디 프로세스를 구분하기 위해) 통해서 관리, 선별한다.
resource 공유 옵션
- 부모와 아이는 모든 resource를 공유한다.
- 아이는 부모의 resource의 일부를 공유한다.
- 부모와 아이는 resource를 공유하지 않는다.
실행 옵션
- 부모와 아이는 동시에 실행한다.
- 자식이 끝날 때까지 부모는 기다린다.
주소 공간
- 부모의 주소 공간을 자식이 복사한다
- 자식이 별도의 프로그램을 가진다.
UNIX 예) ch02. 21번 참조
Process Termination(종료)
정상적인 방법
- 자식에서 부모로 status data를 반환한다.
- 프로세스의 resources를 operating system에 의해 메모리 할당이 해제된다.
비정상적인 종료를 해야하는 이유
- 자식이 자원을 초과해서 사용할 때
- 자식에게 일 시킬게 없을때
- 부모의 일이 끝날 때, 자식 또한 종료된다.
프로세스를 종료하면, 모든 자식들은 또한 종료되어야 한다.
Cascading termination(폭포에서 차례로 내려오는 것), 자식부터 끝냄으로써 안정성이 있다.
만약, 부모 프로세스가 자식 프로세스가 반환한 정보를 회수하지 않으면 자식 프로세스는 종료되었음에도 정보가 메모리에 남아 있는 좀비 프로세스가 된다
'os' 카테고리의 다른 글
Chapter 8: Deadlocks (0) 2020.10.26 Chapter 6: Synchronization Tools (0) 2020.10.16 Chapter 2: Operating-System Structures (0) 2020.10.11 Chapter 5: CPU Scheduling (0) 2020.09.28 Chapter 1: Introduction (0) 2020.09.18