티스토리 뷰
일단 아래는 OS의 구조를 나타내는 그림이다. 숙지하자.
파일 시스템, I/O, 프로세스가 모두 메모리 관리에 얽혀있다는 것이 중요한 것 같다.
나머지는 대강 흐름만 이해하자!
이번에 정리할 내용은 프로세스 내용이다.
Process는 모든 연산의 기본이 되는 실행중인 프로그램의 개념이다.
프로세스에는 스케쥴링, 생성과 종료, communication등이 얽혀있다.
프로세스는 간단히 실행중인 프로그램의 인스턴스라고 표현할 수 있다. 프로그램 자체는 논리적인 것이고 실행중인 것은 프로세스라고 해야 맞는 것이다.
프로세스는 프로그래밍을 간단히 하기위해, 효율(스루풋)을 높이기 위해 필요하다.
여러개의 프로세스를 사용하면 CPU 사용율을 증가시킬 수 있고 그에 따라 스루풋도 늘어날 것이다.
OS는 어떠한 프로세스를 나타내기 위하여 Process Control Block(PCB)을 유지한다.
이 PCB에는 실행에 필수적인 정보들이 담겨있다. 그리고 그 PCB는 실행중일때는 레지스터로써 나타내진다.
어떠한 프로세스에 연루되는 상태는 다섯가지로 나뉜다.(사실 책마다 다른것 같다)
new, ready, running, waiting, terminated 이렇게 다섯가지이다.
new는 새로 생성된 프로세스, ready는 대기중인 프로세스, running은 실행중, waiting은 어떠한 자원을 기다리는, terminated는 실행을 완료하고 종료된 상태를 나타낸다.
그리고 멀티프로세스에 있어서 필수적인 개념이 Context Switch이다.
이것은 CPU가 다른 프로세스로 실행 권한을 넘겨줄때, 기존에 실행중인 상태를 저장하고 새롭게 실행될 프로세스의 상태를 불러오는 것을 말한다. Context는 PCB로써 나타내진다.
이 컨텍스트 스위칭 중에는 CPU가 idle 해지기 때문에 컨텍스트 스위치 자체가 오버헤드가 되기 때문에 적절하게 컨텍스트스위치를 사용해야 할 것이다.
프로세스를 생성하는 법으로는 2가지가 있다.
아예 새로운 프로세스를 만드는 방법과, 기존의 프로세스를 복사하는 방법이다.
기존의 프로세스를 복사할 때는 fork()와 같은 함수를 호출할때처럼 부모와 자식 관계의 구조를 가질 수 있다.
부모와 자식은 보통 자원을 공유하다가 복사가 일어날 경우 자식의 고유 스택을 만들어버리는 Copy-On-Write(COW) 메커니즘을 사용한다. 또한 일반적으로 부모는 자식 프로세스가 종료될 때까지 대기하였다가 종료하게 된다.
프로세스의 스케쥴링이라는 것은 어떤 프로세스를 실행시킬 지 결정하는 것이다.
OS는 프로세스를 큐로 관리하여 어떠한 프로세스가 실행될 지 스케쥴링 정책(Scheduling Policy)에 의해 결정한다.
이 큐의 종류로는 Job Queue, Ready Queue, Device Queue가 있다. 잡 큐는 모든 프로세스를 관리하는 큐이고,
레디 큐는 ready 상태인 프로세스들의 대기 큐이며 Device Queue는 각 장치별로 대기 큐를 관리하게 된다.
여러개의 프로세스를 사용하면 CPU 사용율을 증가시킬 수 있고 그에 따라 스루풋도 늘어날 것이다.
OS는 어떠한 프로세스를 나타내기 위하여 Process Control Block(PCB)을 유지한다.
이 PCB에는 실행에 필수적인 정보들이 담겨있다. 그리고 그 PCB는 실행중일때는 레지스터로써 나타내진다.
어떠한 프로세스에 연루되는 상태는 다섯가지로 나뉜다.(사실 책마다 다른것 같다)
new, ready, running, waiting, terminated 이렇게 다섯가지이다.
new는 새로 생성된 프로세스, ready는 대기중인 프로세스, running은 실행중, waiting은 어떠한 자원을 기다리는, terminated는 실행을 완료하고 종료된 상태를 나타낸다.
그리고 멀티프로세스에 있어서 필수적인 개념이 Context Switch이다.
이것은 CPU가 다른 프로세스로 실행 권한을 넘겨줄때, 기존에 실행중인 상태를 저장하고 새롭게 실행될 프로세스의 상태를 불러오는 것을 말한다. Context는 PCB로써 나타내진다.
이 컨텍스트 스위칭 중에는 CPU가 idle 해지기 때문에 컨텍스트 스위치 자체가 오버헤드가 되기 때문에 적절하게 컨텍스트스위치를 사용해야 할 것이다.
프로세스를 생성하는 법으로는 2가지가 있다.
아예 새로운 프로세스를 만드는 방법과, 기존의 프로세스를 복사하는 방법이다.
기존의 프로세스를 복사할 때는 fork()와 같은 함수를 호출할때처럼 부모와 자식 관계의 구조를 가질 수 있다.
부모와 자식은 보통 자원을 공유하다가 복사가 일어날 경우 자식의 고유 스택을 만들어버리는 Copy-On-Write(COW) 메커니즘을 사용한다. 또한 일반적으로 부모는 자식 프로세스가 종료될 때까지 대기하였다가 종료하게 된다.
프로세스의 스케쥴링이라는 것은 어떤 프로세스를 실행시킬 지 결정하는 것이다.
OS는 프로세스를 큐로 관리하여 어떠한 프로세스가 실행될 지 스케쥴링 정책(Scheduling Policy)에 의해 결정한다.
이 큐의 종류로는 Job Queue, Ready Queue, Device Queue가 있다. 잡 큐는 모든 프로세스를 관리하는 큐이고,
레디 큐는 ready 상태인 프로세스들의 대기 큐이며 Device Queue는 각 장치별로 대기 큐를 관리하게 된다.
'Computer Science' 카테고리의 다른 글
[Operating Systems] Synchronization (0) | 2011.07.14 |
---|---|
[Operating System] Threads (0) | 2011.07.11 |
[Operating System] Intro (0) | 2011.07.11 |
[Algorithms] 비교 기반 sort의 worst case의 lower bound 분석 (0) | 2011.07.07 |
[Algorithms] Branch and Bound (0) | 2011.07.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Discrete Mathematics
- 리버스엔지니어링
- 리눅스
- Algorithms
- reversing
- linux
- 데이터 과학
- 데이터 사이언스
- 카타르
- 이산수학
- 안드로이드
- 기계학습
- Data Structure
- 카타르 음주
- Machine Learning
- 자료구조
- 개발
- 통계학습
- 머신러닝
- Reverse Engineering
- 대학원
- Data Science
- 알고리즘
- android
- statistical learning
- 자바
- 리버싱
- 운영체제
- operating systems
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함