- 프로세스(process)
- 실행중인 프로그램
- 작업의 단위(unit of work)
- 시스템은 프로세스의 모음
- 동시에 실행 가능
- 프로세스의 메모리 레이아웃
- Text section: 실행코드
- Data section: 전역변수
- Heap section: 프로그램 실행시 동적으로 할당되는 메모리
- Stack section: 함수호출시 임시 데이터 스토리
- 프로그램과 프로세스
- 프로그램 자체는 프로세스가 아님
- 실행파일이 메모리에 load될 때 프로그램이 프로세스가 됨
- ex) 두 프로세스가 동일 프로그램과 관련
- 두 개의 독립된 실행 순서로 간주됨
- 창을 여러 개 열어놓는 경우, 같은 프로그램이더라도 여러 개의 독립적인 프로세스를 가짐
- Text section은 동일, 나머지는 다름
- 프로세스가 실행 중에 다른 프로세스를 생성할 수 있음
- 프로세스의 상태
- new: 새로 만들어진 상태
- ready: cpu를 사용하기 위해 기다리고 있는 상태, 프로세서에게 할당되기 위해 기다리고 있는 상태
- running: 실행중인 상태
- waiting: 입출력이 필요하거나 어떤 이벤트가 발생한 경우(파일 접근 등) 기다리는 상태
- terminated: 실행이 끝난 상태
- 오직 한 프로세스만이 어떤 프로세스 코어에서 running 상태일 수 있음
- 많은 프로세스들은 ready 와 waiting 상태에 있음
- Process Control Block(PCB)
- 프로세스가 가지는 상태정보를 저장하는 자료구조/공간
- 특정 프로세스 관련 정보들을 포함
- Process state: new, ready, running, waiting, halted 등
- Program conter: 다음에 실행해야되는 명령어가 있는 위치(주소값)
- CPU registers
- CPU-scheduling information: process priority, pointers to scheduling queues, and any other scheduling parameters
- Memory-management information
- Accounting information
- I/O status information
- 프로세스 스케줄링(Process Scheduling)
- 항상 프로세스들이 실행되도록 하여 CPU 이용률을 최대화함
- 프로세스 사이에서 CPU core를 자주 switch => user와 program이 interact함
- core에서 프로그램을 실행하기 위해 실행 가능한 프로세스를 하나 고름
- 각각의 cpu core에서 한 번에 하나의 프로세스 실행
- core 수 보다 프로세스 수가 더 많은 경우, 프로세스들이 wait해야 함
생략......(나중에)
- 프로세스간 통신(Interprocess Communication)
- 여러 프로세스는 OS에서 동시에 실행됨
- independent
- 프로세스는 시스템에서 실행중인 다른 프로세스와 데이터를 동유하고 있지 않을 때 independent임
- cooperating
- 프로세스는 시스템에서 실행중인 다른 프로세스와 영향을 주고 받을 때 cooperating임
- 프로세스 협력(cooperating)의 이유: 정보공유 및 데이터 공유, 처리속도 높임, modularity
- cooperating process는 interprocess communication(IPC) mechacism을 필요로 함
- IPC 모델
- shared-memory 모델
- 메모리 영역 공유
- 빠름
- 충돌이 일어날 수 있으므로 프로세스들은 동시에 동일 위치에 쓰지 않도록 책임져야 함 (순서 제어 필요)
- message-passing 모델
- 메세지를 교환
- 더 작은 양의 데이터를 교환할 때 유용함
- 느림
- shared-memory 모델
생략......(나중에)
- 스레드(Thread)
- CPU를 사용하는 기본적인 단위 (즉, CPU 1개에 thread 1개가 올라감)
- 프로세스 안의 제어 흐름
- 동일 프로세스에 속하는 다른 thread들과 code, data, resource, file signal를 공유함
- 한 번에 하나 이상의 task 실행 가능
- ex) 웹 브라우저에서 하나의 스레드는 이미지나 텍스트를 표현하고, 또 다른 스레드는 네트워크에서 데이터를 검색할 수 있
'cs 공부 > 운영체제' 카테고리의 다른 글
ch08. Deadlocks (0) | 2023.07.05 |
---|---|
ch06. Process Synchronization (0) | 2023.06.26 |
ch05. CPU Scheduling (0) | 2023.06.12 |