morijwana
수로그
morijwana
전체 방문자
오늘
어제
  • 분류 전체보기
    • 강의노트
    • Machine Learning
      • Pandas
      • NLP
    • Computer Science
      • Linux
      • TIL
    • Development
      • React
      • Swift
      • Javascript
    • 스터디 기록
      • Clean Code
      • 구글 BERT의 정석
      • 개발도서
      • 기타
    • Problem Solving
      • Baekjoon
      • ICPC Sinchon
    • 끄적
      • 끄적끄적
      • 요리왕

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • gdsc
  • 개발도서
  • Python
  • word2vec
  • 데이터사이언스
  • 회고
  • Pandas
  • 프로그래밍언어론
  • Bert
  • GDSC Sookmyung
  • nlp
  • 구글BERT의정석
  • ML
  • 민트하임스터디
  • 구부정스터디
  • 프레임워크없는프론트엔드개발
  • Solution Challenge
  • 자연어처리
  • cs224n

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
morijwana

수로그

[2021-1 운영체제] Chapter 3: 프로세스와 스레드
강의노트

[2021-1 운영체제] Chapter 3: 프로세스와 스레드

2021. 6. 18. 00:39

3.1 프로세스의 정의

  • "수행 중인 프로그램"
  • 프로그램과 데이터를 기본으로 정상적인 실행을 위해 필요한 환경을 시스템으로부터 부여받은 능동적인 존재다.
  • (프로그램 + 데이터) + 환경

Process Control Block 프로세스 제어 블록

  • 시스템에서 프로세스를 생성하는 것은 PCB를 생성하는 것과 같다.
  • 프로세스에 대한 모든 정보를 가진 자료구조다.
  • 프로세스 생성 시에 만들어진다.
  • PCB는 메모리에 상주한다.
  • 프로세스 번호, 프로세스 상태(대기, 실행, 준비 등), 프로세스 우선순위, PC 값, 메모리 포인터, 문맥 데이터, 할당받은 자원들에 대한 목록, 계정 정보, 입출력 정보 등을 가진다.

프로세스 상태의 변화

  • 준비, 보류 준비 둘 다 프로그램을 실행하기 위한 준비가 완벽히 되어있는 상태다.
  • 준비는 보류 준비와는 다르게 메모리에 올라와 있으며, CPU만 받으면 바로 실행 가능하다.
  • 준비, 실행, 대기 상태는 메모리에 올라와있는 Active State 이다.
  • 보류는 프로세스로부터 메모리를 회수하는 것(Swapped out)이다.
  • 재개는 프로세스에게 메모리를 할당하는 것(Swapped in)이다.
  • 실행 중인 프로세스가 입출력 처리를 요청하거나 바로 확보될 수 없는 자원을 요청하면 대기 상태로 바뀐다.

 

문맥 교환

  • 모드 스위칭(mode switching): 인터럽트 처리 전후의 프로세스가 같은 경우다.
  • 프로세스 스위칭(process switching): 인터럽트 처리 전후의 프로세스가 다른 경우 = 문맥 교환. 처리해야 할 일이 모드 스위칭보다 많다.

 

3.2 Thread 스레드

  • 프로세스 안에서 세분된 작은 일들이다.
  • 프로세스는 부여된 자원의 소유자로서, 스레드는 스케줄링의 단위로서 존재하게 된다.
  • 한 프로세스에 속한 각각의 스레드들은 프로세스가 가지는 자원을 공유하며 각자의 실행 환경은 따로 갖는다.
  • 스레드는 실행 / 준비 / 대기의 상태를 가질 수 있으며, 동기화 방법은 프로세스의 동기화 방법과 같다.

 

스레드의 종류

1. 사용자 레벨 스레드

  • 사용자 공간 안에 스레드 라이브러리 가 있으며, 스레드의 생성, 처리, 삭제 등 스레드와 관련된 모든 일을 담당한다.
  • OS에게는 프로세스만 보이고 그 안에 스레드는 보이지 않는다.
  • 스레드를 지원하지 않는 OS에서도 스레드 라이브러리를 통해 스레드를 사용할 수 있다.
  • 특정 스레드의 실행에서 대기는 자신이 소속된 프로세스의 대기를 초래하며, 스레드 라이브러리가 실행 중이었던 스레드를 표시해 두고 나중에 CPU가 다시 이 프로세스에 할당되었을 때 계속 실행해 나갈 수 있도록 한다.
  • 스레드 간 스위칭 시 운영체제가 정한 스케줄링에 따를 필요가 없다.
  • CPU가 프로세스 단위로 할당되므로 스레드 단위의 다중처리가 되지 못한다는 단점이 있다.

2. 커널 레벨 스레드

  • 모든 스레드의 관리를 커널이 맡는다.
  • 한 프로세스 내의 다수 스레드는 각각 처리기를 할당받아 병렬 실행이 가능하다.
  • 같은 프로세스에 속한 스레드 간의 스위칭에도 커널이 개입하므로, 모드 스위칭이 요구된다.
저작자표시 (새창열림)

'강의노트' 카테고리의 다른 글

[2021-1 프로그래밍언어론] Chapter 14: Exception Handling and Event Handling  (0) 2021.06.01
[2021-1 프로그래밍언어론] Chapter 12: Object-Oriented Programming  (0) 2021.06.01
[2021-1 프로그래밍언어론] Chapter 11: Abstract Data Types and Encapsulation Constructs  (0) 2021.06.01
[2021-1 프로그래밍언어론] Chapter 10: Implementing Subprograms  (0) 2021.05.30
[2021-1 데이터마이닝및분석] Chapter 2: Data (3) Similarity  (0) 2021.04.16
    '강의노트' 카테고리의 다른 글
    • [2021-1 프로그래밍언어론] Chapter 14: Exception Handling and Event Handling
    • [2021-1 프로그래밍언어론] Chapter 12: Object-Oriented Programming
    • [2021-1 프로그래밍언어론] Chapter 11: Abstract Data Types and Encapsulation Constructs
    • [2021-1 프로그래밍언어론] Chapter 10: Implementing Subprograms
    morijwana
    morijwana
    행복한 휴학생의 devlog

    티스토리툴바