티스토리 뷰
KOCW 이화여대 반효경 교수님의 2014년 운영체제 강의를 듣고 정리한 내용입니다.
프로세스 3
Thread
- 프로세스 내부의 CPU 수행 단위
- 같은 일을 하는 process를 여러개 띄워놓고 싶다 → process 여러개 실행시 메모리 낭비 (독자적인 주소공간 = Code + Data + Stack) (즉, 프로세스 하나에 CPU 수행 단위만 여러개 두고 있게함 → Thread의 개념)
- ❗️메모리 공간 하나만 띄우고 (프로세스 하나만 띄우고), 각 Program Counter가 code의 다른 부분 실행하게 함
- 각 CPU 수행단위마다 `현재 register에 어떤 값을 넣고`, `P.C가 Code 어느 부분을 가르키며 실행하고 있는가` 를 별도로 유지함
- Thread 하나가 Code 어느 부분을 실행하다가 함수 호출을 하면 함수 호출/리턴 관련 정보를 Stack에 저장
Thread의 구성
각 Thread들이 독립적으로 가짐
- Program Counter
- Register set
- Stack space
Thread가 동료 Thread와 공유하는 부분
task라고 부름
- Code section
- Data section
- OS resources
Thread의 장점
- Responsiveness (응답성)
- 사용자 입장에서 빠른 것
- 하나의 서버 스레드가 blocked (waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행 (running) 되어 빠른 처리를 할 수 있음
- ex. 스레드가 여러개인 웹 브라우저
- 웹 브라우저가 처음에 HTML 문서 로딩 → HTML에 포함된 이미지 다시 불러옴
- 이미지 파일 불러오는 동안에 process를 block 시키는게 아니고
- 이미지 파일을 불러오기 전에 process가 CPU를 얻어서 화면에 text만 먼저 display해줌
- 비동기식
- Resource Sharing (자원 공유)
- 똑같은 일을 하는 program이 여러개 있을 때 별도의 process로 사용하는 것 보다
- 하나의 process를 만들고 그 안에 CPU 수행단위만 여러개를 두게 되면
- Code/Data/각종 자원을 Thread들이 공유하게 됨
- 자원을 효율적으로 쓸 수 있음
- Economy
- Creating
- 새로운 process 만드는 것보다 process 안에 thread 추가하는게 오버헤드가 적음
- Context-Switching
- 프로세스 사이에서 문맥 교환 일어나는 것은 오버헤드가 큼 (CPU 관련 정보 저장, cache memory flush)
- 프로세스 내부에서 thread 간 문맥교환은 간단함 (동일한 주소공간을 쓰고 있기 때문. 대부분의 문맥은 그대로 사용할 수 있음)
- Creating
- Utilization of MP Architectures (MP: Multi Processor)
- 각각의 thread가 서로 다른 CPU에서 병렬적으로 일할 수 있음 (결과를 빨리 얻을 수 있음)
- CPU가 여러개 있는 환경에서 thread를 사용했을 때 장점
'CS공부 > 운영체제' 카테고리의 다른 글
[KOCW 반효경 교수님 운영체제 강의] 프로세스 관리 2 (0) | 2021.04.15 |
---|---|
[KOCW 반효경 교수님 운영체제 강의] 프로세스 관리 1 (프로세스 생성/종료) (0) | 2021.04.15 |
[KOCW 반효경 교수님 운영체제 강의] 프로세스 2 (동기식/비동기식 입출력) (0) | 2021.04.12 |
[KOCW 반효경 교수님 운영체제 강의] 프로세스 1 (0) | 2021.04.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크