일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- System
- 웹해킹
- webhacking.kr
- 정보보안기사 실기
- OS
- PWN
- Buffer Overflow
- 네트워크
- 워게임
- system hacking
- 정보보안기사
- Operating System
- Shell code
- 정보처리기사 실기
- Spring
- hacking
- 해킹
- stack overflow
- webhacking
- pwnable
- 운영체제
- Payload
- Spring Framework
- Lord of BOF
- SQL
- Pwnable.kr
- BOF
- wargame
- LOB
- Spring MVC
- Today
- Total
DongDD's IT
Process - 정의, State, PCB, Process Scheduling, Scheduler, Context switch, IPC 본문
Process - 정의, State, PCB, Process Scheduling, Scheduler, Context switch, IPC
DongDD 2017. 10. 19. 17:28Process
Process Concept
Definition : 실행 중인 프로그램을 의미(메모리에 올라간 프로그램). job, task라고도 불림
-> Program과는 조금 다른 의미를 갖는다.
- Process는 stack,heap,code,data영역과 PCB(Process Control Block)을 가지고 있음
- Process(Active entity) <-> Program(Passive entity)
Process state
1) New : 프로세스가 생성된 상태
2) Running : 실행중인 상태
3) Waiting : 어떤 이벤트를 기다리는 상태
4) Ready : Scheduler에 의해 할당받기를 기다리는 상태
5) Terminated : 실행이 종료된 상태
State Diagram
1) Ready->Running : Scheduler가 선택했을 때
2) Running->Ready : 인터럽트나 Scheduler에 의해 우선순위가 밀려 다른 Process를 dispatch할 때
3) Running->Waiting : I/O요청이나 여러 event를 기다려야 할 때
4) Waiting->Ready : Event가 종료했을 때 Ready상태로 가서 dispatch를 기다림
5) Running->Terminated : Process의 실행이 끝났을 때
Process Control Block(PCB)
Definition : Process의 여러 정보를 가지고 있는 block
1) Process state : 상태정보를 저장
2) Program counter : 다음에 실행할 명령어의 주소
3) CPU Register
4) CPU scheduling information : 우선순위, CPU 점유시간 등
5) Memory-management information : 해당 프로세스의 주소 공간
6) Accounting information : 페이지 테이블, 소유자 등
7) I/O status information : File을 open했을 경우의 정보
Process Scheduling
Definition : Process에게 CPU 등의 자원 배정을 하는 동작
Process Scheduling queue
1) Job queue : system에 존재하는 모든 Process
2) Ready queue : main memory에 적재되어 실행되기를 기다리는 Process
3) Device queue : device를 사용하기 위해 기다리는 Process(I/O)
Process는 크게 I/O-bound process와 CPU-bound process로 나눌 수 있음
1) I/O-bound process
-> I/O 작업을 실행하는데 많은 시간을 소모하는 방식
2) CPU-bound process
-> 프로세스의 I/O 요청을 적게 받고, 대부분의 시간을 CPU를 사용해 작업하는 방식
-> 일반적으로 CPU 사용시간이 더 짧기 때문에 I/O-bound process의 우선순위가 더 높음
Process Scheduler
Definition : 실행가능한 Process에게 CPU를 할당해주는 루틴
1) Long-term scheduler(Job scheduler)
- Ready queue에 있는 Process를 선택해 Memory에 적재
- Process의 상태를 New->Ready로 바꿔줌
2) Short-term scheduler(CPU scheduler)
- Memory에 적재되어 있는 Process를 선택해 CPU를 할당
- Process의 상태를 Ready->Running로 바꿔줌
3) Medium-term scheduler
- CPU사용량이 많아질 경우 일부 프로세스를 주 기억 장치에서 보조 기억 장치로 이동시켜 다른 프로세스들이 제대로 동작할 수 있도록 해줌
Context Switch
Definition : CPU가 다른 프로세스를 가져올 때 현재의 프로세스를 저장하고 새로운 프로세스를 로드하는 동작
-> context switch 동작 과정에서 System이 제대로 된 일을 할 수 없기 때문에 overhead가 생김
Process Type in UNIX(Linux)
- UNIX에서는 프로세스들이 자식과 부모 관계를 가지는 트리 구조로 형성되어 있음
- fork() system call을 이용하여 한 프로세스에서 자식 프로세스를 생성함
-> fork()를 통해 생성된 프로세스는 자원을 공유하고 동시에 실행되고 주소 공간을 복사함
1) Zombie Process(좀비 프로세스)
-> fork()를 통해 생성한 자식 프로세스가 종료됐지만 부모 프로세스가 아직 거두지 않은 자식 프로세스를 의미
2) Orphan Process(고아 프로세스)
-> fork()를 통해 생성한 자식 프로세스를 부모 프로세스가 거두지 않고 종료된 경우 자식 프로세스를 거둘 프로세스가 사라진 프로세스를 의미
-> UNIX에서는 init이라는 상위의 프로세스가 있어 이러한 프로세스를 거둠
Inter-Process Communication(IPC)
Definition : 프로세스들 사이에 서로 데이터를 주고받는 동작
1) Shared Memory
- Memory의 일부를 공유 영역으로 설정하고 다른 프로세스가 해당 공유 영역에 붙어 communication을 하는 방식
2) Message Passing
- Shared Memory와 달리 공유 영역없이 link를 생성해 communication 하는 방식
1) Direct communication : 프로세스들이 서로 연결되어 직접적으로 통신(Send, Receive)
- 하나의 link를 생성해 양방향 통신
2) Indirect communication : 프로세스 사이에 mailbox라 불리는 중개자를 두어 통신
- 공통으로 사용하는 mailbox에 link를 생성
- 위와 같이 mail box를 생성해 mail box를 통해 통신
- 하나의 link에는 여러 프로세스가 연결되어 있음
Mail Box Synchronization
1) Blocking(synchronous)
- Blocking send : message를 receiver가 받을 때까지 sender가 block
- Blocking receive : message를 sender가 보낼 때까지 receiver가 block
2) Non-Blocking(asynchronous)
- Non-Blocking send : message를 보내고 계속해서 수행
- Non-Blocking receive : message가 있건 없건 받은 후 계속 수행