5. Process 2~3

2021. 3. 6. 21:09· Computer Science/OS
반응형

KOCW 반효경 교수님 운영체제 강의 정리
이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다.
잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다.
강의 링크 : http://www.kocw.net/home/cview.do?lid=29d9a718cff884c3, http://www.kocw.net/home/cview.do?lid=54e1a4abcd59272d



1. Thread


Thread란 CPU를 수행하는 단위를 뜻한다, 가벼운 Process라고 부르기도 한다.
Process 내부의 Thread가 여러개 있는 경우, Thread가 Process 내부에서 공유하는 것들을 task라고 칭한다.




동일한 일을 수행하는 Process가 여러 개 있을 경우 Process의 주소공간이 여러 개가 만들어지게 된다.
이러한 현상은 메모리를 낭비할 수 있다.
Thread는 Process 하나에서 공유할 수 있는 것은 최대한 공유하고 CPU 수행 관련 정보(PC, registers, stack)은 별도로 가지고 있게 된다.



예를 들어 네트워크를 통해 웹페이지를 불러올 때(이것 또한 I/O 작업) 다중 Thread 구조로 해놓으면
하나의 Thread가 웹서버에서 그림파일을 불러옴과 동시에 다른 Thread는 텍스트를 불러오게 된다.
이럴 경우 먼저 처리가 완료된 것 부터 표출되기 때문에 사용자는 기다리는 시간이 줄어들어 빠른 응답성을 제공받게 된다.
만약 웹페이지를 불러오는 것을 Thread가 아닌 Process 단위로 나누어 놓게 되면
동일한 일을 하게 되는데 메모리 낭비가 발생하게 된다.


CPU가 1개가 아닌 여러 개를 사용할 경우 Thread를 사용하면 병렬성을 높일 수 있다.
예를 들어 1000 x 1000 연산 작업을 수행할 때 행과 열을 곱하는 것을 Thread로 만들어 CPU가 각각 연산을 처리하고
더하게 되면 더 빠른 결과를 도출할 수 있다.


2. Benefits of Threads


Thread의 장점은 아래와 같다.

  1. Resonsiveness(응답성)
    ex) 웹 페이지를 불러올 때

  2. Resource Sharing(자원 공유)
    하나의 Process 안에서 Code, Data, Resource를 공유함

  3. Economy(경제성)
    Process 하나에 Thread를 추가하는 것은 Overhead가 크지 않으나 Process Context Switch는 Overhead가 높음

  4. Utilization of MP Architecctures(멀티프로세서 아키텍쳐 활용)
    Thread가 서로 다른 CPU에서 병렬적으로 일을 할 수 있음(병렬성)

3. Implementation of Threads


Thread의 구현 방식은 아래와 같다.

  1. Kernel Threads
    Thread가 여러 개 있다는 것을 Kernel이 알고 있는 것이다.

  2. User Threads
    Process 안에 Thread가 여러 개 있는 것을 Kernel은 모르고 사용자 프로그램이 스스로 라이브러리의 지원을 받아서
    여러 개의 Thread를 관리한다. -> 구현 상의 제약이 있을 수 있다.

반응형

'Computer Science > OS' 카테고리의 다른 글

7. CPU Scheduling 1  (0) 2021.03.14
6. Process Management  (0) 2021.03.07
4. Process 1  (0) 2021.02.27
3. System Structure & Program Execution 2  (0) 2021.02.11
2. System Structure & Program Execution 1  (0) 2021.02.11
'Computer Science/OS' 카테고리의 다른 글
  • 7. CPU Scheduling 1
  • 6. Process Management
  • 4. Process 1
  • 3. System Structure & Program Execution 2
eeminsu
eeminsu
개발일지
eeminsu
eeminsu's Devlog
eeminsu
전체
오늘
어제
  • 분류 전체보기 (22)
    • Computer Science (17)
      • OS (9)
      • 컴퓨터 구조 (8)
    • Study (2)
      • Java (2)
    • Project (1)
    • Book (1)
    • ETC. (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java backend 멘토링
  • 해시
  • AWS
  • Hash
  • jvm
  • 후기
  • 에프랩 1개월 후기
  • java backend
  • spring boot
  • f-lab
  • OpenSearch
  • java
  • f-lab 1개월 후기
  • 에프랩

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
eeminsu
5. Process 2~3
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.