[PintOS] About OS, Process, Thread

novxerim·2022년 1월 4일
1

SW-Jungle

목록 보기
37/59

운영체제

커널

• 커널 : Linux 운영 체제(OS)의 주요 구성 요소이며 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스이다. OS내에 위치하며, 하드웨어의 모든 주요 기능을 제어한다.

• 커널의 기능
1. 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적한다.
2. 프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정한다.
3. 장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행한다.
4. 시스템 호출 및 보안: 프로세스의 서비스 요청을 수신한다.

프로세스

• 작업(Job)과 프로그램
- 작업 : 실행 할 프로그램 + 데이터
- 컴퓨터 시스템에 실행 요청 전의 상태
• 프로세스 (Process)
- 실행을 위해 시스템(커널)에 등록된 작업
(Disk 안에 있는 상태면 job, 커널에서 실행되고 있으면 Process)
- 시스템 성능 향상을 위해 커널에 의해 관리됨
1) 실행중인 프로그램
- 커널에 등록되고 커널의 관리 하에 있는 작업
- 각종 자원들을 요청하고 할당 받을 수 있는 개체
- 프로세스 관리 블록(PCB)를 할당 받은 개체
- 능동적인 개체 : 실행 중에 각종 자원을 요구, 할당, 반납하며 진행

2) 커널에 등록되고 커널의 관리 하에 있는 작업
- 각종 자원들을 요청하고 할당 받을 수 있는 개체
- 프로세스 관리 블록(PCB)를 할당 받은 개체
- 능동적인 개체 : 실행 중에 각종 자원을 요구, 할당, 반납하며 진행

프로세서(cpu) != 프로세스

• 프로세스는 자원(Resource)을 할당받고, 그 자원을 제어함.
• 스레드(Thread, ~) : 자원과 제어 중 제어부분만 분리해놓은 것.
하나의 프로세스 안에 쓰레드(제어)가 여러개 있을 수 있다.
+ 프로세스가 할당받은 리소스(힙-데이터-코드)는 공유한다.
같은 프로세스의 스레드들은 동일한 주소 공간을 공유한다.

스레드

• 스레드
- Light Weight Process (LWP) 라고도 한다.
- 프로세서 활용의 기본 단위
- 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드와 공유
- 전통적 프로세스 = 단일 스레드 프로세스 (자원이 있고 제어요소가 하나)
• 구성요소
- Thread ID
- Register set (Program Counter, Stack Pointer 등, 상위 프로세스나 타 스레드와 협업하기 위해서 필요한 것들)
- Stack (작업영역)

• 스레드의 장점
- 사용자 응답성
: 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업 계속 처리 가능
- 자원 공유
: 자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음)
ex) 동일 address space에서 스레드 여러개
- 경제성
: 프로세스의 생성, context switch에 비해 효율적 (context switch는 메모리를 지웠다 썼다하지만, 스레드는 메모리의 변화 없이 작업 가능하다.)
- 멀티 프로세서 활용
: 병렬처리를 통해 성능 향상

• 사용자 수준 스레드 (n:1)
• 커널 수준 스레드 (1:1) : 스레드를 커널이 관리
• 혼합형 스레드 (n:m)


https://youtu.be/iks_Xb9DtTM

  • 동시성 : 프로세서 하나가 여러 작업 돌아가면서 일부분씩 진행하는 것. 이렇게 진행중인 작업을 바꾸는 것이 Context swiching

  • 병렬성 : 프로세서 하나에 코어 여러개가 달려서 각각 작업 수행. 멀티코어 프로세서(듀얼코어x2, 쿼드코어x4, 옥타코어x8)가 달린 컴퓨터에서 할 수 있는 방식.

  • 프로세스
    - 프로그램이 실행돼서 돌아가고 있는 상태. 즉, 컴퓨터가 어떤 일을 하고 있는 상태
    - 컴퓨터의 자원을 분할해서 씀

  • 스레드
    - 한 프로세스 내에서 여러 갈래의 작업들이 실행되도록 하는 여러 갈래.
    - 프로세스마다 주어진 전체 자원을 함께 사용함.
    - 속도, 효율면에서는 낫지만, 프로세스 안에 스레드 두 개가 동시에 손을 대면 Error남 (두 번 처리 된 것이 아니라 하나만 처리 된 것으로 되어버리는 등의 에러 -> 이러한 에러 방지용으로 synchronized 블럭 함수를 만들어서 한 번에 한 스레드만 처리하도록 하는 등의 방법이 있음.)

profile
블로그 이전했습니다. https://yerimi11.tistory.com/

0개의 댓글