프로세스 - 1
chanto11
·2021. 3. 9. 11:09
Process : 프로세스
실행중인 프로그램, OS의 작업의 단위
CPU자원, 메모리, 파일, I/O device 가 필요하다
- Text section: 실행 코드
- Data section: 전역 변수
- Heap section: 동적 할당된 데이터
- Stack section: 함수 호출시 임시적인 데이터 ( return 주소, 지역변수 )
Process life cycle : 프로세스 상태
- New : 프로세스가 생성된 상태
- Running : 프로세스가 실행된 상태
- Waiting : 프로세스가 기다리는 상태 ( cpu자원 할당 전, I/O 작업 대기 )
- Ready : CPU 점유 전 대기상태
- Terminated : 모든 실행 종료 상태
PCB (Process Control Block) or TCB (Task Control Block)
: 각 프로세스가 가져야할 정보 덩어리
- Process state : 프로세스 상태정보
- Program counter : 다음에 실행될 명령어의 주소값, 명령어 포인터라고도 불림
- CPU registers : CPU 레지스터들의 정보
- CPU-scheduling info : CPU 스케쥴 정보
- Memory-management info : 메모리 관리 정보
- Accounting info : 계정 정보
- I/O status info : 파일이나 자원 I/O 정보
※ N개의 프로세스가 있으면 PCB(0), PCB(1) ... PCB(N-1)개의 PCB가 생성되어 동작중.
Thread : 스레드 : 가벼운 프로세스
프로세스 내에서 실행되는 흐름의 단위.
일반적으로 하나의 프로세스는 하나의 스레드를 가짐. 프로그램 환경에 따라 둘이상 사용가능.
프로세스의 멀티 프로세스개념을 프로세스 안의 스레드에 적용하면서 멀티 스레드사용.
멀티 프로세스보다 멀티 스레딩이 훨씬 많이 쓰인다.
※ 멀티프로그래밍은 CPU를 최대한 효율적으로 쓰기위함이고,
※ 시분활은 CPU 자원을 시간의 축에서 자주 switch하여 최대한 활용하고 사용자는 동시에 작업하는 것처럼 보이게함.
Scheduling Queues : [ ready queue - wait queue ]
CPU 자원을 얻기위해 ready 나 waiting 상태의 작업들을 넣는 queue
PCB들의 Linked List 로 구성되어 있음.
※ wait queue -> ready queue -> excute
Queueing Diagram
Context Switch : 문맥 교환
Context 는 프로세스가 사용중일 때의 PCB 정보이고,
Context 에 프로세스 동작 상태를 저장했다가 다시 CPU를 점유할 때 꺼내서 저장된 시점부터 작업한다.
※ Context Switch === 현재 PCB 저장 -> 새로운 PCB 복원
Parent process - child process
fork() 를 사용해 자식프로세스 생성가능.
concurrently = 동시성, 자식프로세스가 종료될 때까지 부모 프로세스가 wait 할 수 있다.
부모의 프로세스가 복제되거나 새로운 프로그램이 로드될 수 있다.
※ 구별: fork() 시 자식 프로세스는 0을 리턴하고 부모 프로세스는 pid 값을 리턴한다.
Zombie and Orphan
zombie process : 부모 프로세스가 fork 후 종료하여 부모가 없는 자식 프로세스
orphan process : 부모 프로세스가 fork 후 wait 하지않고 방치해둔 자식 프로세스 (demon 프로세스를 만들때)
'운영체제' 카테고리의 다른 글
스레드 와 동시성 - Thread & Concurrency (0) | 2021.03.23 |
---|---|
프로세스 - 3 (0) | 2021.03.18 |
프로세스 - 2 (0) | 2021.03.10 |
운영체제 - 2 (0) | 2021.03.08 |
컴퓨터와 운영체제 - 1 (0) | 2021.03.08 |