728x90
반응형

Chapter15. 파일 시스템

학습목표

  • 파일에 대해 이해합니다
  • 디렉터리에 대해 이해합니다
  • 파티셔닝과 포매팅이 무엇인지 이해합니다
  • 파일 시스템의 파일 할당 방법을 학습합니다
  • FAT 파일 시스템과 유닉스 파일 시스템을 학습합니다

파일

  • 하드디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합
  • 의미 있고 관련 있는 정보를 모은 논리적인 단위

디렉터리(폴더)

  • 여러 개의 파일 또는 디렉터리를 묶어서 관리할 수 있음
  • 경로: 디렉터리를 이용해 위치를 특정 짓는 정보
  • 절대 경로: 루트 디렉터리부터 시작하는 경로
  • 상대 경로: 현재 디렉터리부터 시작하는 경로

파티셔닝

  • 저장 장치의 논리적인 영역을 구획하는 작업

포매팅

  • 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업

파일 할당 방법

  1. 연속 할당 (Contiguous Allocation):
    • 설명: 파일을 디스크의 연속된 블록에 할당합니다.
    • 장점: 간단하고 빠른 액세스.
    • 단점: 외부 단편화 문제가 발생할 수 있음.
  2. 불연속 할당 (Non-contiguous Allocation):
    • 설명: 파일이 디스크의 여러 비연속적인 블록에 할당됩니다.
    • 장점: 외부 단편화 문제를 해결.
    • 단점: 복잡한 관리, 탐색 속도 저하.
  3. 연결 할당 (Linked Allocation):
    • 설명: 파일 블록들이 링크 리스트로 연결되어 있습니다.
    • 장점: 외부 단편화 해결.
    • 단점: 탐색 속도 느림, 추가적인 저장 공간 필요.
  4. 색인 할당 (Indexed Allocation):
    • 설명: 파일의 모든 블록 번호를 색인 블록에 저장하여 관리합니다.
    • 장점: 빠른 액세스, 외부 단편화 문제 해결.
    • 단점: 색인 블록을 위한 추가 공간 필요.

파일 시스템

FAT 파일 시스템 (File Allocation Table)

  • 설명: FAT는 마이크로소프트가 개발한 파일 시스템으로, 주로 플로피 디스크와 초기 하드 드라이브에 사용되었어요. FAT12, FAT16, FAT32와 같은 여러 버전이 있습니다.
  • 장점:
    • 간단하고 널리 사용됨
    • 호환성이 뛰어남 (다양한 운영체제와 디바이스에서 사용 가능)
  • 단점:
    • 큰 파일과 드라이브에서 비효율적 (특히 FAT12, FAT16)
    • 보안과 고급 기능이 부족

유닉스 파일 시스템 (UFS, ext 등)

  • 설명: 유닉스 파일 시스템은 유닉스 및 유닉스 계열 운영체제 (리눅스 포함)에서 사용됩니다. 일반적인 예로는 ext2, ext3, ext4, UFS 등이 있습니다.
  • 장점:
    • 안정적이고 효율적
    • 대용량 파일과 드라이브에서 성능이 우수
    • 저널링, ACL(액세스 제어 목록), 스냅샷 등의 고급 기능 제공
  • 단점:
    • FAT보다 복잡하여 설정 및 관리가 어려울 수 있음
    • 호환성이 제한될 수 있음 (특히 윈도우 시스템과)

마운트

  • 운영체제에서 저장 장치를 사용하기 위해 특정 파일 시스템을 디렉터리 트리에 연결하는 과정
  • 외부 저장 장치를 운영체제에 인식시키고, 해당 장치의 데이터를 읽고 쓸 수 있게 해주는 작업
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter14. 가상 메모리  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter14. 가상 메모리

학습목표

  • 스와핑이 무엇인지 이해합니다
  • 연속 메모리 할당 기법과 외부 단편화 문제를 이해합니다
  • 가상 메모리 관리 기법인 페이징의 개념과 작동을 이해합니다
  • 요구 페이징의 개념과 페이지 교체 알고리즘을 이해합니다
  • 스래싱과 그를 해결하기 위한 프레임 할당을 이해합니다

스와핑

  • 현재 실행되지 않은 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식
  • 스왑 영역: 프로세스들이 쫓겨나는 보조기억장치의 일부영역
  • 스왑 아웃: 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
  • 스왑 인: 반대로 스왑 영역에서 메모리로 오는 것

메모리 할당

  • 최초 적합: 프로세스가 적재될 수 있는 공간을 발견하는 즉시 메모리를 할당하는 방식
  • 최적 적합: 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 배치하는 방식
  • 최악 적합: 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 배치하는 방식

외부 단편화

  • 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상

페이징

  • 메모리의 물리 주소 공간을 프레임 단위로 자르고, 프로세스의 논리 주소 공간을 페이지 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법
  • 페이징 시스템에서의 스왑 아웃은 페이지아웃, 스왑 인은 페이지 인이라고 부름
  • 페이지 테이블: 페이지의 번호를 이용해 페이지가 적재된 프레임을 찾을 수 있음

요구 페이징

  • 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

순수 페이징 기법

  • 프로그램이 실행되기 전에 모든 페이지를 메모리에 미리 로드하지 않고, 필요한 페이지만 요청 시 메모리에 로드합니다. 쉽게 말해, 필요한 순간에만 필요한 데이터를 가져오는 방식

페이지 교체 알고리즘

  • 새로운 페이지를 메모리에 로드할 때 어떤 페이지를 제거할지 결정하는 방법
  1. FIFO (First-In, First-Out)
    • 설명: 가장 먼저 들어온 페이지를 가장 먼저 제거하는 방식입니다.
    • 장점: 단순하고 구현이 쉬움.
    • 단점: 오래된 페이지가 반드시 덜 사용된 것은 아니므로 비효율적일 수 있음.
  2. LRU (Least Recently Used)
    • 설명: 가장 오랫동안 사용되지 않은 페이지를 제거하는 방식입니다.
    • 장점: 자주 사용되는 페이지를 유지하여 성능 향상.
    • 단점: 구현이 복잡할 수 있음.
  3. LFU (Least Frequently Used)
    • 설명: 사용 빈도가 가장 적은 페이지를 제거하는 방식입니다.
    • 장점: 자주 사용되지 않는 페이지를 제거하여 효율적.
    • 단점: 사용 빈도 계산이 복잡할 수 있음.
  4. OPT (Optimal)
    • 설명: 미래에 가장 늦게 사용할 페이지를 제거하는 이상적인 방식입니다.
    • 장점: 가장 효율적인 방법.
    • 단점: 미래 예측이 불가능하므로 실제 구현이 어려움.

스래싱

  • 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저하되는 문제

스레싱을 해결하기 위한 프레임 할당 방식

  1. 고정 할당 방식:
    • 설명: 각 프로세스에 고정된 수의 프레임을 할당하는 방식입니다.
    • 장점: 예측 가능한 메모리 사용, 간단한 구현.
    • 단점: 비효율적인 메모리 사용 가능성.
  2. 가변 할당 방식:
    • 설명: 프로세스의 필요에 따라 동적으로 프레임을 할당하는 방식입니다.
    • 장점: 메모리 활용도 극대화, 유연성 증가.
    • 단점: 복잡한 관리, 예측 어려움.
  3. 워킹 셋(Working Set) 모델:
    • 설명: 프로세스가 일정 기간 동안 자주 참조하는 페이지 집합을 기준으로 프레임을 할당하는 방식입니다.
    • 장점: 효율적인 메모리 사용, 스레싱 방지.
    • 단점: 매개변수 설정 복잡.
  4. 페이지 폴트 빈도(Page Fault Frequency) 모델:
    • 설명: 페이지 폴트 발생 빈도를 기준으로 프로세스의 프레임 수를 조절하는 방식입니다.
    • 장점: 스레싱 방지, 동적 조절.
    • 단점: 정확한 페이지 폴트 빈도 측정 필요.
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter13. 교착 상태(데드락)

학습목표

  • 교착 상태가 무엇인지 이해합니다
  • 교착 상태는 어떤 상황에서 발생하는지 이해합니다
  • 교착 상태를 예방하고, 회피하고, 검출하는 방법을 학습합니다

**교착 상태(Deadlock)**란?

  • 여러 프로세스나 스레드가 서로 자원을 기다리며 무한정 대기 상태에 빠져 작업을 진행하지 못하는 상황

발생 상황

  • 상호 배제 상황일 때
  • 자원을 점유하고 대기할 때
  • 자원을 비선점 상태일때
  • 자원을 해제하지 않고 무한 대기할 때

예방 방법

  • 자원 할당 전에 모든 자원을 확보
  • 요청 순서를 정해 자원 할당

회피 방법

  • 자원 상태를 모니터링해 교착 상태가 발생하지 않도록 조정
  • 은행원 알고리즘을 사용

검출 방법

  • 시스템의 자원 그래프를 사용해 교착 상태를 검사
  • 주기적으로 검사하여 교착 상태를 해결
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter12. 프로세스 동기화

학습목표

  • 동기화란 무엇인지 알아봅니다
  • 공유 자원과 임계 구역 문제를 이해합니다
  • 임계 구역 문제를 해결하기 위한 동기화 기법을 학습합니다

동기화의 의미

  • 프로세스 동기화: 프로세스들 사이의 수행 시기를 맞추는 것
    • 실행 순서 제어: 프로세스를 올바른 순서대로 실행하기
    • 상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
  • 즉, 동기화에는 실행 순서 제어를 위한 동기화가 있고, 상호 배제를 위한 동기화가 있다

공유자원과 임계 구역

  • 공유 자원: 프로세스들이 사용하는 공동의 자원
    • 동시에 실행하면 문제 발생
  • 임계 구역: 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
  • 운영체제는 임계 구역 문제를 아래 세 가지 원칙 하에 해결함
    • 상호배제
    • 진행
    • 유한 대기

동기화 기법

  1. 뮤텍스 락 (Mutex Lock):
    • 설명: 상호 배제를 통해 한 번에 하나의 스레드만 리소스에 접근할 수 있도록 하는 락.
    • 용도: 한 스레드가 작업을 끝낼 때까지 다른 스레드가 접근하지 못하게 막음.
    • 장점: 단순하고 직관적.
    • 단점: 데드락 발생 가능성.
  2. 세마포 (Semaphore):
    • 설명: 카운터를 이용해 특정 수의 스레드가 동시에 리소스에 접근할 수 있도록 하는 동기화 도구.
    • 용도: 리소스 접근 제한, 큐 크기 조절 등.
    • 장점: 다수의 스레드 동시 접근 허용.
    • 단점: 관리 복잡도 증가.
  3. 모니터 (Monitor):
    • 설명: 락과 조건 변수를 포함한 고수준의 동기화 매커니즘.
    • 용도: 객체의 상태를 보호하고, 조건에 따라 스레드 실행을 제어.
    • 장점: 코드가 더 간결하고 유지보수 쉬움.
    • 단점: 구현 복잡.
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter10. 프로세스와 스레드

학습목표

  • 프로세스 제어 블록이란 무엇인지 이해합니다
  • 문맥 교환의 정의와 과정을 학습합니다
  • 프로세스는 메모리에 어떻게 배치되는지 학습합니다
  • 프로세스 상태와 프로세스 계층 구조를 학습합니다
  • 스레드의 개념을 이해하고, 멀티프로세스와 멀티스레드의 차이를 이해합니다

프로세스 제어 블록

  • 운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 할당함.
  • 이를 위해 운영체제는 프로세스 제어블록(PCB)를 이용
  • 프로세스 제어 블록**(PCB)**은 프로세스와 관련된 정보를 저장하는 자료 구조
  • 마치 상품에 달린 태그와 같음
  • PCB는 커널 영역에서 생성됨
  • 새로운 프로세스를 생성했다 → 운영체제가 PCB를 생성했다

문맥 교환

  • 운영체제는 빠르게 프로세스의 실행순서를 관리함
  • 프로세스 A에서 B로 바꿀때 A의 실행정보를 백업해야함
  • 이러한 중간 정보, 즉 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보를 **‘문맥’**이라 함
  • 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 **‘문맥 교환’**이라고 함
  • 문맥 교환은 여러 프로세스가 끊임없이 빠르게 번갈아 실행되는 원리임

프로세스의 메모리 영역

  • 프로세스가 생성되면 커널 영역에 PCB가 생성됨
  • 사용자 영역에는 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장됨
  • 정적 할당 영역 (크기가 고정된 영역)
    • 코드 영역: 텍스트 영역이라 불림. 실행할 수 있는 코드, 즉 기계어로 이루어진 명령어가 저장 됨
      • CPU가 실행할 명령어가 담겨 있기 때문에, 읽기 전용 공간
    • 데이터 영역: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
      • 대표적으로 전역 변수(프로그램이 실행되는 동안 유지되며, 프로그램 전체에서 접근 가능한 변수)
  • 동적 할당 영역
    • 힙 영역
      • 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장 공간
      • 메모리 공간을 할당 했다면 언젠간 반납해야 함
      • 반납하지 않는다면 메모리 누수 발생
    • 스택 영역
      • 데이터를 일시적으로 저장하는 공간
        • 매개변수, 지역변수

프로세스 상태

  • 프로세스는 생성, 준비, 실행, 대기, 종료 상태를 거치며 실행됩니다

스레드

  • 스레드란 프로세스를 구성하는 실행의 흐름 단위

[비교] 멀티프로세스와 멀티스레드

https://pyoja.tistory.com/303

728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter09. 운영체제 시작하기

학습목표

  • 운영체제가 무엇인지 이해합니다
  • 커널이 무엇인지 학습합니다
  • 시스템 호출과 이중 모드에 대해 이해합니다
  • 운영체제가 제공하는 핵심 서비스의 종류를 학습합니다

운영체제란

  • 프로그램 실행에 필요한 자원을 시스템 자원 혹은 자원이라 함
  • 실행할 프로그램에 필요한 자원을 할당하고, 프로그램 실행을 돕는 프로그램이 운영체제
  • 커널 영역과 사용자 영역으로 나누어짐
  • 운영체제는 커널 영역에 적재되는 프로그램
  • 실행하는 프로그램의 메모리 영역을 적재적소에 할당하는 것은 운영체제의 역활

운영체제의 심장, 커널

  • 커널: 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 담당
  • 이중모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 분리하는 방식
    • CPU는 명령어를 사용자 모드 또는 커널 모드로써 사용할 수 있음
    • 사용자 모드: 운영체제 서비스를 제공받을 수 없는 실행 모드 (커널X)
    • 커널 모드: 운영체제 서비스를 제공받을 수 있는 실행 모드 (커널O)
    • 시스템 호출: 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법

운영체제의 핵심 서비스

  • 프로세스 관리
    • 실행중인 프로그램을 프로세스라고 함
  • 자원 접근 및 할당
  • 파일시스템 관리
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24

+ Recent posts