일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Google Cloud Platrofm
- Solution Architect
- gcp
- Cloud Bigtable
- Reverse Proxy
- Kubernetes Engine
- Amazon Web Service
- Compute Engine
- container
- Cloud SQL
- AWS Database
- 리버스 프록시
- playbook
- Google Cloud Platorm
- Google Cloud
- AWS Certificate
- 앤서블
- Cloud Spanner
- Cloud Datastore
- GKE
- 아마존웹서비스
- kubernetes
- AWS Solution Architect
- VPC
- Solution Architect Certificate
- AWS
- Google Cloud Platform
- AWS 자격증
- ansible
- Cloud Storage
- Today
- Total
sungwony
[운영체제의 기초] Processes and Threads (1) - Process Concept 본문
이 포스트는 SNU에서 제공하는 운영체제의 기초 강의를 개인 학습용으로 정리한 포스트입니다
Agenda
- 프로세스 개념
- 프로세스 스케쥴링
- 컨텍스트 스위칭
- 프로세스 생성과 종료
- 멀티스레딩
- 결론
프로세스의 개념 - 프로세스는 무엇이며 왜 필요한가?
프로세스는 원인과 결과를 귀속시키는 대상
= 프로세스는 OS상에서 프로그램을 실행시키는 기본 주체
= 런타임 시스템의 수행 주체
= CPU 등 자원을 할당 받는 주체
(OS에서 프로세스는 가장 중요한 단위다)
※ Decomposition : "복잡한 문제를 단순한 여러 개의 문제로 나누어 처리하는 방법론"
=> 프로세스는 수행의 주체이면서 복잡한 문제를 단순화 시킬 수 있는 주체
프로세스를 한마디로 정의하면 'Program in execution(수행중인 프로그램)'
프로세스는 특정 프로세스 위에서 수행되는 execution stream
(※ execution stream : 프로세스가 지금까지 수행한 모든 명령들의 순서)
프로그램(Program) vs 프로세스(Process)
프로그램
- 저장 매체에 저장된 수동적인 코드 시퀀스
- 수동적인 매체
프로세스
- 상태를 가지고 CPU, 메모리 등의 자원을 점유한 상태의 프로그램
- 능동적인 주체
Process State
- 프로그램을 수행을 하는데 영향을 받는 정보들
1. Memory Context : Memory code, data, stack segment
2. Hardware Context : Register Values
3. System Context : Per-Proc Kernal Info
Swapping
메모리 부족 문제를 해결하기 위해 CPU를 사용하지 않는 프로세스의 데이터를 메모리에서 다른 저장 장치로 내보내고 CPU를 사용할 프로세스의 데이터를 메모리로 로드하는 것(과거의 OS에서 사용)
Design-time entity vs Run-time entity
Design-time entity
1. 설계
요구사항 명세서를 바탕으로 {Tasks} Set을 산출
2. 구현
{Tasks}를 바탕으로 구현하여 {Programs} Set를 산출
Program은 곧 개별 Process로 수행된다
Process Control Block
Niclans Wirth 프로그램의 정의
Program = Data Structure + Algorithm
프로세스를 Data Structure로 어떻게 가지고 있는가?
System Context
- Process Control Block(PCB)
- Proc Table : 복수의 PCB 관리
프로세스의 상태 전이(State Transition)
- New(생성)
- Ready(Active하지만 CPU를 할당받지 못한 상태)
- Ready Queue(Ready List) : Ready 상태의 프로세스들을 관리하기 위한 Queue 형태의 자료 구조로 일반적으로 PCB들을 Linked List로 연결하여 구현
- Running(CPU를 할당받은 상태) - 싱글 프로세스에서 Running인 프로세스의 개수는 0 or 1
- Waiting(CPU를 내주고 대기하는 상태로 원하는 이벤트가 온다면 Ready 상태로 변경)
- OS는 Waiting Reason에 따라 별도의 큐를 구성하여 Waiting 시킴
- Terminated(종료)
프로세스 스케쥴링(Process Scheduling)
프로세스들이 공정하게 CPU를 공유할 수 있도록 다음에 실행할 프로세스를 선택하는 작업
seprate mechanism & policy 방식으로 설계
프로세스를 동작시키는 OS의 주요 내부 동작 (디스패쳐)
loop forever{
run the process for a while
stop it and save its state
load state of another process
}
OS는 active entity 처럼 보이지만 사실 passive entity 이다
CPU의 Control이 OS에서 User Process로 User Process에서 OS로 이동시킬 수 있도록 해야한다
이런 메커니즘이 Interrupt이다
'development > 강의노트' 카테고리의 다른 글
[운영체제의 기초] Computer Hardware (0) | 2020.03.22 |
---|---|
[운영체제의 기초] Evolution of OS (2) (0) | 2020.03.17 |
[운영체제의 기초] Evolution of OS (1) (0) | 2020.03.15 |