본문 바로가기
제로베이스 BE 21기/CS Study

[CS] CS 지식 정리 - 2

by ♡˖GYURI˖♡ 2024. 2. 28.

컨텍스트 스위칭 동작의 단계

  1. 실행 중지할 프로세스의 PCB에 현재 CPU의 PC와 SP 레지스터 값을 저장
  2. 다음 실행할 프로세스의 바이너리 코드를 저장매체(SSD, HDD)에서 찾아서, 이전 PC와 SP 레지스터 값을 읽어옴
    • PCB에서 찾아옴
  3. 읽어온 다음 실행할 프로세스의 기존 PC와 SP 값을 CPU의 해당 레지스터에 업데이트
  4. 다음 실행할 프로세스를 CPU에서 실행

 

프로세스간 커뮤니케이션

프로세스는 기본적으로는 다른 프로세스의 사용자 영역 공간을 직접 접근할 수 없음

 

 

fork()

기본적으로 프로세스 생성 시, 리눅스(유닉스 계열)에서는 최초 프로세스를 제외하고는 fork() 시스템콜을 사용해서 부모 프로세스를 복사하여 자식 프로세스를 생성

 

 

IPC

  • IPC는 Inter Process Communication의 약자로 프로세스간 커뮤니케이션 기법을 의미함
  • 파일을 사용하는 방법도 기본적으로 IPC 기법 중 하나가 될 수 있음
  • 대부분의 IPC 기법은 내부적으로 프로세스간 사용자 영역을 활용함
    • 커널 영역
  • Message Queue도 기본적으로 IPC 기법 중 하나가 될 수 있음

 

IPC 기법의 종류

  • 파이프
  • 세마포어
  • 소켓

 

각 IPC 기법에 대한 설명

  • 파이프는 기본적으로는 단방향 통신을 지원함
  • 메시지 큐는 기본적으로 FIFO 정책으로 데이터 전송
  • 공유 메모리는 사용자 영역에 메모리 공간을 만들고 활용하는 방식
    • 커널 영역
  • 시그널은 다른 프로세스에 어떤 이벤트가 발생되었는지를 알려주는 기법

 

쓰레드

  • 기본적으로 하나의 프로세스에서는 여러 개의 쓰레드를 생성할 수 있음
  • 쓰레드들 간에는 동일 프로세스의 데이터를 접근할 수 있음
  • 쓰레드는 각각 별도의 스택, 힙, 데이터 공간을 가짐
    • 스택만 별도로 가지며 코드, 데이터, 힙은 공유
  • 쓰레드는 Light Weight Process라고도 불림

 

쓰레드의 장단점

  • 쓰레드의 장점 : 쓰레드간 커뮤니케이션시 IPC와 같은 기법을 사용할 필요가 없음
  • 쓰레드의 장점 : 사용자에 대한 응답성 향상
  • 쓰레드의 단점 : 하나의 프로세스에 생성된 쓰레드들 중 하나라도 문제가 있으면 해당 프로세스 전체에 영향을 미칠 수 있음
  • 쓰레드의 장점 : 여러 쓰레드를 생성하고 실행해도 성능이 저하되지 않음
    • 저하되는 경우도 있음

 

쓰레드 동기화 이슈

  • 동기화 이슈를 해결하기 위한 방안으로 Mutual Exclusion이 있음
  • 동일한 자원을 여러 쓰레드가 동시에 읽을 시, 동기화 이슈가 발생할 수 있음
    • 읽는 건 괜찮고, 바꿔버리는 것이 문제(?)
  • Semaphore를 동기화 이슈를 해결하는데 활용할 수 있음
  • 기본적으로 동기화 이슈 해결방안은 어느 한 쓰레드가 공유 자원 처리 시, 다른 쓰레드가 동시에 접근하지 못하도록 막는 것

 

교착상태와 기아상태

  • 기아상태 : 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태
  • 교착상태 : 여러 프로세스가 동일 자원 점유를 요청할 때 발생
  • 기아상태 : 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 발생 가능
  • 기아상태 : 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어서, 다음 단계로 진행하지 못하는 상태
    • 교착상태의 뜻

 

가상 메모리

메모리가 물리 메모리보다 많아 보이게 하는 기술

프로세스가 여러 개라도 실제 특정 시점에 사용하는 메모리는 작다는 점에 착안한 것

 

 

MMU

CPU에 코드 실행 시, 가상 메모리 접근이 필요할 때, 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치

 

 

페이징 시스템

  • 페이징 시스템은 구현을 위해 하드웨어 지원이 필요함
  • 동일한 크기의 페이지를 기반으로 가상 주소와 물리 주소를 매핑하는 방식을 사용
  • 동일한 크기의 페이지와 특정 영역을 나타내는 가변적인 페이지로 나누어서 주소를 관리하는 방식 사용
    • 크기가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리
  • 가상 주소는 가상 메모리 페이지(p)와 p안에서 참조하는 변위(d)로 계산되어 특정 주소를 가리킬 수 있음

 

페이징 시스템의 각 단계

  1. 해당 프로세스에서 특정 가상 주소 접근 시도
  2. 해당 프로세스의 데이터 영역에서 해당 가상 주소가 포함된 Page 번호 확인
    • PCB?
  3. 해당 Page가 물리 메모리에 있으면, 해당 페이지의 첫부분을 가리키는 물리 주소를 Page Table에서 알아냄
  4. 해당 페이지의 첫부분을 가리키는 물리 주소에 변위값을 더해서 가상 주소에 해당하는 물리 주소 접근

 

프로세스 구동 시 해당 페이지 테이블의 base 주소가 저장되는 레지스터

CR3

 

 

TLB

TLB는 Translation Lookaside Buffer의 약자

  • 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시
  • 최근에 일어난 가상 메모리 주소와 물리 주소의 변환 테이블 저장
  • 일종의 주소 변환 캐시

요구 페이징

프로세스의 모든 데이터를 메모리로 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재하는 기법

 

 

페이지 폴트

향후에 프로세스가 접근할 페이지들은 미리 물리 메모리에 넣어놓는다면 페이지 폴트를 줄일 수 있음

 

 

페이지 교체 정책

  • OPT
  • LRU
  • NUR
  • FRN

 

LFU 알고리즘

가장 적게 사용된 페이지를 교체하는 정책

 

 

스레싱

반복적으로 페이지 폴트가 일어나서, 과도하게 페이지 교체 작업이 일어나 실제로는 아무일도 못하는 상황

 

 

세그멘테이션 기법

서로 크기가 다른 논리적 단위인 세그먼트로 분할하여 가상 메모리를 관리하는 기법

 

 

inode 방식의 파일 시스템

슈퍼 블록, 아이노드 블록, 데이터 블록으로 나눠서 파일을 관리하는 시스템

  • 슈퍼 블록 : 파일 시스템의 전체 정보를 가진 블록
  • 아이노드 블록 : 각 파일의 상세 정보를 가진 블록
  • 데이터 블록( = 디스크 블록) : 실제 데이터를 가진 블록

 

가상 파일 시스템

네트워크 등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리가 가능토록 하기 위해 고안된 시스템

 

 

부팅 과정 각 단계에 대한 설명

  1. 사용자가 컴퓨터를 킴
  2. BIOS가 특정 저장매체(SSD/HDD)의 영역을 읽어와 bootstrap loader를 메모리에 올림
  3. bootstrap loader 실행
  4. bootstrap loader가 실행이 필요한 응용 프로그램을 특정 주소의 물리 주소에 복사하고 해당 응용 프로그램의 처음 실행위치로 PC를 가져다 놓음
    • 부트로더는 하드디스크의 첫 섹터인 MBR 내 OS를 RAM에 로드(OS Loading)

 

디렉토리 엔트리

디렉토리를 표현하는데 쓰이는 자료구조

 

 

Mutex와 세마포어

Mutex는 다른 말로 Binary Semaphore라고도 불림

 

 

다중 단계 페이징 시스템

필요없는 페이지를 생성하지 않도록 하여, 공간 절약과 성능에도 도움이 되도록 하는 시스템

  • Page Directory로 영역을 구분하여, 그 중에 데이터가 있는 데릭토리만 페이지 테이블을 만들어 메모리 공간을 절약

 

CPU 코드 실행 중 메모리 접근 시 가상 주소와 물리 주소를 변환해주는 하드웨어 장치

MMU

 

 

프로세스 구동 시, 가상 주소와 물리 주소 매핑 정보를 다루기 위해 페이지 테이블의 base 주소값을 넣게 되는 CPU 레지스터 이름

CR3

'제로베이스 BE 21기 > CS Study' 카테고리의 다른 글

[CS] CS 지식 정리 - 1  (1) 2024.02.27