PintOS Project 1을 진행하며 가져갈거
- 프로세스와 스레드의 개념, 차이를 설명할 수 있어야함
- 멀티 프로세스 대신 멀티 스레드를 사용하는 이유를 설명할 수 있어야함
프로세스?
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 *프로그램(어떤 작업을 위해 실행할 수 있는 파일)
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립개체)
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- 동적인 개념으론 실행되는 프로그램 의미함
프로세스 특징
- 프로세스는 각각의 독립된 영역(Code, Data, Stack, Heap)을 할당받음
- 프로세스는 최소 1개의 스레드(메인스레드)를 가지고있음
- 각 프로세스는 별도의 공간에서 실행되며 서로 변수나 자료구조에 접근 X
- 서로의 자원에 프로세스간의 통신(IPC, inter-process communication, 어렵고 복잡)을 이용해야함
- ex) 파일, 소켓, 파이프 등
스레드?
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
스레드 특징
- 스레드는 프로세스내에서 Stack만 따로 할당받고 같은 프로세스 내에서 스레드끼리 Code, Data, Heap 영역은 공유함
멀티 스레드?
- 하나의 프로세스를 다수의 실행 단위로 구분하여 자원 공유 -> 자원의 생성과 중복성 최소화 -> 수행능력 향상
- 즉 하나의 프로그램이 동시에 여러개 수행
멀티 스레드 사용이유?
- 멀티 프로세스 이용하는 것보다 쓰레드가 메모리 공간이랑 시스템 자원 소모 적음
- 쓰레드간 통신할때 별도 자원 이용 안하고 데이터영역과 heap 영역에서 데이터 공유가능함(데이터 영역, 스택영역, 힙 영역 중 스택영역만 공유안함)
- 프로그램 응답 시간 단축
- 프로세스보다 컨텍스트 스위칭이 더 빠름
멀티스레드 사용시 신경써야되는거
- 공유하는 자원이 있다는게 좋기도한데 서로 다른 쓰레드가 데이터를 공유하기때문에 쓰고있는 변수나 자료구조에 접근해서 엉뚱한 값을 가져올수도있음 - >그래서 동기화 작업(synchronization)이 필요하다
- 동기화작업? - 작업 처리 순서를 컨트롤 하고 공유 자원에 대한 접근을 컨트롤 하는거
- 그래도 과도한 락걸기는 병목현상 발생 야기 -> 공유자원 아닌부분은 락 안걸어도 됌
- 락? - 한개의 스레드가 종료할때까지 다른 스레드가 못돌게 하는거 ex) 화장실 칸 1개 사람 여러명
스레드 컨텍스트란?
- 멀티 스레드 운영체제에서 하나의 스레드의 실행중인 상태 정보이다.
스레드 컨텍스트 스위칭이란?
- 현재 CPU에 의해 실행되고 있는 스레드의 스레드 컨텍스트를 다른 스레드의 스레드 컨텍스트로 바꿔 CPU에 할당하는 것을 말한다.
'OS' 카테고리의 다른 글
크래프톤 정글 2기 2 PintOS Virtual Memory 중간진행 (0) | 2023.06.18 |
---|---|
크래프톤 정글 2기 2 PintOS Virtual Memory 메모리 용어정리 (0) | 2023.06.17 |
크래프톤 정글 2기 2 PintOS SystemCall (0) | 2023.06.12 |
크래프톤 정글 2기 1-2 PintOS Command Line Parsing (0) | 2023.06.03 |
크래프톤 정글 2기 1-2 PintOS Priority Scheduling(우선순위 스케줄링) (0) | 2023.06.01 |