-
99클럽 코테 스터디 14일차 TIL / 운영체제 - 프로세스Study(진행중)/항해99 2024. 8. 5. 01:23
오늘의 학습 키워드
- 운영체제
공부한 내용 본인의 언어로 정리하기
Process? → 실행중인 프로그램(program in execution)
program that performs a single thread of execution
단일의 실행 스레드를 실행하는 프로그램
OS 입장에서는 작업에서 단위가 프로세스 단위
하나의 프로세스가 실행하기 위해서는 자원(Resource)이 필요
- CPU
- Memory
- File, IO Device등
프로세스들의 메모리 배치 섹션
- Text → 실행 코드
- Data → 전역 변수
- Heap → 프로그램 실행 중에 동적으로 할당되는 메모리(new, malloc)
- Stack → 함수를 호출할 때 임시 데이터 저장장소(매개변수, 복귀 주소, 지역 변수)
프로세스를 제어하는 방법?
- PCB(Process Control Block) or TCB(Task Control Block - Linux)
- 각 프로세스가 가져야 할 정보를 PCB에 저장하고 제어
- PCB는 많은 정보를 가지고 있다
- Process state : new, ready, running, waiting, halted, …
- Program counter : 이 프로세스가 다음에 실행할 명령어의 주소를 가리킴
- CPU Register (Instruction + Data Register)
- CPU Scheduling Information
여기까지는 한 줄의 실행 단위인데(single thread of execution) 어려개의 실행을 하고 싶다면? → Multitasking, Multiprocessing
프로세스보다 더 가볍게 실행하면? → Thread
과거 Multiprocessing → 현재 대부분 Multithreading
Multiprogramming(multiprocessing)의 목적 : 동시에 여러개의 프로세스를 실행해보자!
→ Time Sharing의 목적
- cpu의 처리 속도는 빠르므로 cpu는 어차피 넉넉함
- cpu 코어를 프로세스마다 자주 스위칭을 해서 동시에 실행되는 것 처럼 보이게 하는 것!
CPU가 작업을 실행하는 방법
Scheduling Queue(ready queue)
- 바로 CPU를 획득하지 않음 == 바로 running 상태가 아님
→ Wating Queue
- IO등의 작업 이후 실행을 기다리는 상태
- 이후 ready queue로 이동
Context Switching
Context(문맥)?
→ 프로세스가 사용되고 있는 상태가 PCB에 저장되어 있는 것 = PCB 정보
Context Switching?
- CPU core를 다른 프로세스에게 넘겨주는 것
- 현재 프로세스의 Context를 저장
- 새로운 프로세스의 Conext를 복원
결국 OS는 2가지 메커니즘을 제공해야 함
- 프로세스를 만드는 것
- 프로세스를 종료하는 것
프로세스는 하위 프로세스를 만들 수 있어야 함 -> fork()를 통해 제공
fork()는 부모 프로세스의 상태를 그대로 복제해서 제공
단, 부모 프로세스의 전역 변수를 하위 프로세스가 영향을 줄 수 x
부모 프로세스는 두 가지 선택지가 존재
1. 하위 프로세스를 생성하고 작업이 완료될 때 까지 부모 프로세스는 대기하는 방법 -> wait()
2. 하위 프로세스를 생성하고 본인의 작업을 그대로 지속하는 것
내일 학습할 것은 무엇인지
내일은 알고리즘을 열심히 풀어봐야겠다.
반응형'Study(진행중) > 항해99' 카테고리의 다른 글
99클럽 코테 스터디 23일차 TIL / IPO(Leetcode) (0) 2024.08.14 99클럽 코테 스터디 22일차 TIL / Maximal Rectangle(Leetcode) (0) 2024.08.13 99클럽 코테 스터디 11일차 TIL + 가장 큰 수(프로그래머스) (0) 2024.08.02 99클럽 코테 스터디 10일차 TIL + 최대 힙(백준) (0) 2024.08.01 99클럽 코테 스터디 9일차 TIL + 프로세스와 스레드, 코루틴 (0) 2024.07.31