。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

CS

1. 운영체제 정리

quarrrter 2023. 11. 25. 13:20

1. 메모리 계층 구조

  1. 사용 목적에 따라 메모리를 여러 계층으로 둠
  2. 레지스터, 캐시 메모리, RAM, 하드디스크로 구성
  3. CPU접근 속도: 레지스터 > 캐시메모리 > RAM > 하드디스크

2. 시스템 콜

  1. 운영체제의 커널 모드에 접근해 필요한 기능을 수행하기 위해 프로세스에서 호출하는 함수
  2. 프로세스 제어, 파일 조작, 장치 조작 등을 수행함

3. 프로세스

  1. 실행 중인 하나의 프로그램으로, 하나 이상의 스레드를 가짐
  2. PCB에 프로세스 현재 상태, PID(Process ID), 부모 PID 등을 저장함
  3. 프로세스마다 독립된 메모리 공간을 가짐
    • 스택: 지역함수, 함수의 매개변수, 반환주소 값 저장
    • 힙: 동적 메모리 할당
    • 데이터: 전역 변수, 정적 변수, 배열, 구조체 저장, 세부족으로 초기화된 데이터는 데이터 영역에, 초기화되지 않은 데이터는 BSS 영역에 저장됨
    • 코드: 기계어
  4. 프로세스의 상태
    • 생성(new) : 프로세스가 PCB를 가지고 있지만 OS로부터 승인을 받기 전
    • 준비(ready) : OS로부터 승인받은 후 준비 큐에서 CPU할당을 기다림
    • 실행(running) : 프로세스가 CPU를 할당받아 명령어를 실행함
    • 대기(waiting) : 프로세스가 입출력이나 이벤트 발생을 기다려야 해서 CPU 사용을 멈추고 기다림
    • 종료(terminated) : 프로세스 실행 종료
  5. 프로세스의 생성
    • fork() 함수 호출
    • 부모 프로세스는 자식 프로세스의 PID를, 자식 프로세스는 0을 반환함

4. 스레드

  1. 프로세스에서 실제 실행되는 흐름의 단위
  2. 각 스레드는 스택 영역을 할당받음
  3. 스택을 제외한 영역은 다른 스레드와 공유

5. 멀티 프로세스와 멀티 스레드

  1. 멀티 프로세스
    • 응용 프로그램을 여러 개의 프로세스로 구성하는 것
    • 프로그램을 하나의 프로세스로 구성하는 것보다 안정적임
    • 콘텍스트 스위칭으로 오버헤드가 발생함
    • 독립된 메모리 공간을 갖기 때문에 IPC를 사용함
  2. 멀티 스레드
    • 스레드를 여러 개 생성해 작업을 처리하는 것
    • 스택을 제외한 영역은 다른 스레드와 공유하므로 데이터 동기화 필요
    • 콘텍스트 스위칭 시 멀티 프로세스 대비 오버헤드가 적음

6. 콘텍스트 스위칭

  1. 멀티 프로세스 환경에서 CPU가 다른 프로세스를 처리하기 위해 처리 중인 프로세스를 변경하는 것
  2. 처리하던 프로세스 정보를 저장하고, 다음으로 처리할 프로세스 정보를 레지스터에 로드하면서 오버헤드 발생

7. 프로세스 동기화

  1. 멀티 프로세스 환경에서 공유 자원의 일관성을 보장하기 위한 방법
  2. 상호배제 기법 이용
    • 뮤텍스: 락(lock)을 가진 한 프로세스만 임계 영역에 접근 가능
    • 세마포어: 정해진 개수의 프로세스만 임계 영역에 접근 가능

8. 교착 상태

  1. 상호 배제: 하나의 공유 자원을 한 개의 프로세스만 사용할 수 있음
  2. 점유와 대기: 프로세스가 최소 하나의 자원을 점유하고 있는 상태에서 추가로 다른 프로세스가 사용중인 자원을 점유하기 위해 대기함
  3. 비선점: 다른 프로세스가 할당된 자원을 뺏을 수 없음
  4. 환형 대기: 프로세스가 자신의 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원 요구 

9. CPU 스케줄링

  1. 목적: 모든 프로세스를 공평하게 실행시키기 위함
  2. 스케줄링 알고리즘의 종류
    • FCFS(First Come First Serve): 비선점형, 선입선출
    • SJF(Shortest Job First): 비선점형, 실행 시간이 짧은 것부터 실행
    • RR(Round Robin): 선점형, 타임 슬라이스(또는 타임 퀀텀) 동안만 프로세스 실행 후 교체
    • SRTF(Shrotest Remaining Time First): 선점형, 남은 프로세스 중 실행 시간이 가장 짧은 프로세스 실행
  3. 스케줄러의 종류
    • 장기 스케줄러: 어떤 프로세스를 준비 큐에 넣을지 결정함
    • 단기 스케줄러: 준비 큐에 있는 프로세스 중 어떤 프로세스를 CPU에 할당할지 결정함
    • 중기 스케줄러: 메모리에 로드된 프로세스 수 관리 

10. 비연속 메모리 할당

  1. 페이징:
    • 프로세스의 메모리 영역과 물리 영역을 일정 크기로 분할하는 방식
    • 프로세스의 메모리 영역을 페이지로, 물리 메모리 영역을 프레임으로 나눔
    • 내부 단편화 문제 발생 가능
  2. 세그먼테이션
    • 프로세스를 논리적 단위로 분할하는 방식
    • 데이터를 보호하기 쉬움
    • 스택 세그먼트 영역에서 스택 오버플로 발생 가능

11. 가상 메모리

  1. 메모리 공간에서 한계를 극복하기 위해 고안한 방식으로, 프로세스 일부만 메모리에 올림
  2. 많은 프로세스를 메모리에 로드할 수 있음
  3. 요구 페이징: 필요한 페이지만 메모리에 로드, 페이지 폴트 발생 가능
  4. 스레싱: 가상 메모리 환경에서 다중 프로그래밍 정도가 높아지면서 페이지 폴트가 빈번히 발생해 CPU 이용률이 오히려 낮아지는 증상

 

 

'CS' 카테고리의 다른 글

2.1 네트워크 계층  (1) 2023.11.28
1. 운영체제 질문  (0) 2023.11.25
캐시 메모리  (0) 2023.11.25
가상 메모리  (1) 2023.11.25
메모리 관리 전략  (1) 2023.11.23