운영체제 공룡책 14

[운영체제 공룡책] 14장 File -System Implementation

14.1 파일 시스템 구조 (File-System Structure)파일 시스템 계층 구조파일 시스템은 여러 계층(Layer)으로 구성된다.아래 그림과 같이 각 계층이 하위 계층의 기능을 활용하여 새로운 기능을 제공하는 구조를 갖는다. 1. I/O 제어 계층 (I/O Control Level)디바이스 드라이버 및 인터럽트 핸들러가 포함되어 있음.파일 시스템과 저장 장치 간 데이터를 전송하는 역할 수행.디바이스 드라이버는 "명령 번역기" 역할을 하며,"블록 123을 읽어라" 같은 고수준 명령을 받아하드웨어가 이해할 수 있는 저수준 명령으로 변환.2. 기본 파일 시스템 (Basic File System, Block I/O Subsystem in Linux)저장 장치에서 데이터를 읽고 쓰는 역할 수행.블록 단..

[운영체제 공룡책] 13장 File -System Interface

13.1 File Concept컴퓨터는 NVM 장치, HDD, 자기 테이프, 광 디스크와 같은 다양한 저장 매체에 정보를 저장할 수 있다.운영체제는 저장 장치의 물리적 속성을 추상화하여 논리적 저장 단위인 파일(file)을 정의한다.파일은 비휘발성 저장 장치에 저장되므로 시스템이 재부팅되어도 데이터가 유지된다.파일은 관련된 정보를 저장하는 이름이 있는 데이터의 집합이며, 프로그램(소스 코드 및 실행 파일)이나 숫자, 문자, 바이너리 데이터 등 다양한 형태를 가질 수 있다.13.1.1 File Attributes파일에는 운영체제가 관리하는 다양한 속성이 있다.이름(Name): 사람이 읽을 수 있는 문자열 형식의 파일명식별자(Identifier): 파일 시스템에서 파일을 식별하는 고유 태그(숫자)유형(Typ..

[운영체제 공룡책] 12장 I/O Systems

12.2 I/O Hardware I/O 장치 연결 및 버스 구조장치는 케이블 또는 무선으로 컴퓨터와 신호를 주고받으며, 포트(Port) 또는 버스를 통해 연결됨.버스(Bus): 여러 장치가 동일한 통신선을 공유하며, PCIe(PCI Express)와 같은 고속 버스가 주로 사용됨.데이지 체인(Daisy Chain): 여러 장치를 순차적으로 연결하는 방식.컨트롤러 (Controller)컨트롤러는 포트, 버스 또는 장치를 작동시키는 전자 장치임.단순 컨트롤러: 직렬 포트 컨트롤러(Serial Port Controller)처럼 특정 신호만을 조작하는 간단한 장치.고급 컨트롤러: 파이버 채널(Fiber Channel, FC) 컨트롤러처럼 별도 회로 기판(HBA 포함)과 프로세서를 가지고 있는 복잡한 장치.12...

[운영체제 공룡책] 11장 Mass -Storage Structure

11.1 대용량 저장장치 구조현대 컴퓨터의 보조 저장장치는 주로 하드 디스크 드라이브(HDD)와 비휘발성 메모리(NVM) 장치로 구성 11.1.1 하드 디스크 드라이브(HDD)1. 구조와 개념HDD는 여러 개의 디스크 플래터(platter)로 구성되며, 각 플래터는 자기적 데이터를 저장할 수 있는 원형 구조를 가짐.플래터의 양면에는 자기 코팅층이 있으며, 데이터를 기록하거나 읽을 때 읽기-쓰기 헤드(read-write head)가 자기 패턴을 감지함.디스크 암(disk arm)이 여러 개의 헤드를 하나의 유닛으로 이동시키며, 플래터 표면은 트랙(track)으로 나뉘고, 트랙은 다시 섹터(sector)로 구분됨.같은 위치의 트랙들을 실린더(cylinder)라고 하며, 일반적으로 수천 개 이상의 실린더와 수..

[운영체제 공룡책] 10장 가상 메모리

10.1 Background 프로그램을 실행하려면 명령어가 물리 메모리에 있어야 하지만, 물리 메모리의 크기는 제한적이다.프로그램 전체가 항상 필요하지는 않으며, 오류 처리 코드나 필요 이상으로 할당된 배열 등은 거의 사용되지 않는다.프로그램의 일부만 메모리에 로드하여 실행할 수 있다면, 더 많은 프로그램을 동시에 실행할 수 있고, 성능도 향상될 것이다. 가상 메모리(Virtual memory) 개념가상 메모리는 논리 메모리와 물리 메모리를 분리하여, 실제 물리 메모리보다 훨씬 큰 메모리 공간을 제공하는 방식이다.개발자는 물리 메모리 크기를 신경 쓰지 않고 프로그램을 작성할 수 있다. 가상 주소 공간(virtual address space) 프로세스가 메모리에 저장되는 방식에 대한 논리적(또는 가상) 보..

[운영체제 공룡책] 9장 메인 메모리

9.1 배경컴퓨터 시스템에서 메모리는 핵심적인 역할CPU는 프로그램 카운터 값을 기반으로 메모리에서 명령어를 가져와 실행한다.메모리는 주소의 연속적인 배열로 구성되며, CPU는 명령어 실행 과정에서 추가적인 메모리 접근을 수행할 수 있다.9.1.1 기본 하드웨어CPU가 직접 접근할 수 있는 저장소는 레지스터와 메인 메모리이다.하지만 메모리는 레지스터보다 접근 속도가 느려, CPU는 데이터를 가져오는 동안 대기해야 한다. 이를 해결하기 위해 캐시 메모리를 CPU와 주 메모리 사이에 배치해 성능을 향상시킨다.운영체제와 사용자 프로세스를 보호하기 위해 기본 레지스터(Base Register)와 한계 레지스터(Limit Register)를 사용한다.기본 레지스터는 접근 가능한 메모리의 최소 주소를, 한계 레지스..

[운영체제 공룡책] 8장 교착상태

8.0 교착상태교착 상태(Deadlock): 여러 스레드가 서로가 가진 자원을 기다리며 영원히 진행할 수 없는 상태.예시: 두 기차가 서로를 기다리며 교차로에서 정지해 있는 상황.8.1 시스템 모델 (System Model)자원: CPU, 파일, I/O 장치 등과 같은 시스템 자원은 유형별로 구분되며, 각 유형에 여러 인스턴스가 존재할 수 있음.자원의 이용 절차:요청(Request): 자원이 사용 중이면 요청한 스레드는 대기 상태로 전환.사용(Use): 자원을 사용하여 작업 수행.반납(Release): 사용 완료 후 자원 해제.관리:운영체제는 자원의 할당 상태를 추적.자원이 할당 중일 경우 요청한 스레드는 대기열에 추가.교착 상태 발생 조건대기 조건: 스레드가 자원을 기다리며 진행하지 못함.순환 대기: ..

[운영체제 공룡책] 7장 동기화 예제

7.1 고전적인 동기화 문제들7.1.1 유한 버퍼 문제 (Bounded-Buffer Problem)생산자와 소비자가 공유 버퍼를 사용하는 문제.버퍼는 제한된 크기를 가지며, 생산자는 항목을 생성하고 버퍼에 추가하며, 소비자는 버퍼에서 항목을 제거해 소비한다.공유 자료구조int n; // 버퍼 크기semaphore mutex = 1; // 상호 배제를 위한 이진 세마포어semaphore empty = n; // 빈 버퍼 슬롯 개수semaphore full = 0; // 꽉 찬 버퍼 슬롯 개수 생산자 프로세스 구조while (true) { produce(); // 항목 생성 wait(empty); // 빈 슬롯 확인 wait(mutex); // 버퍼 접근 제어 add_to..

[운영체제 공룡책] 6장 Synchronization Tools(동기화 도구)

6.1 Background 동시성 및 병렬성프로세스는 동시성(concurrent) 또는 병렬성(parallel)을 통해 실행될 수 있다.CPU 스케줄러는 프로세스 간 빠르게 전환하며 동시 실행을 가능하게 한다.병렬성은 여러 프로세스가 별도의 처리 코어에서 동시에 실행되는 것을 의미한다.공유 데이터와 무결성 문제여러 프로세스가 공유 데이터를 동시에 수정할 때 데이터 무결성 문제가 발생할 수 있다.예로 생산자-소비자 문제가 있으며, 공유 메모리에서 데이터의 생산과 소비를 조율한다.레이스 조건(Race Condition)여러 프로세스가 동일한 데이터에 접근해 조작할 때 실행 순서에 따라 결과가 달라지는 상황을 의미한다.동기화 필요성레이스 조건을 방지하려면 공유 데이터에 대해 하나의 프로세스만 접근 가능하도록 ..

[운영체제 공룡책] 5장 CPU Scheduling

5.1 Basic Concepts단일 CPU 코어가 있는 시스템에서는 한 번에 하나의 프로세스만 실행할 수 있다.멀티프로그래밍의 목적은 CPU 사용률을 최대화하기 위해 항상 일부 프로세스를 실행하는 것5.1.1 CPU – I/O Burst Cycle프로세스 실행 사이클: CPU 실행(CPU burst)과 I/O 대기(I/O burst)가 번갈아 발생. 마지막 CPU burst는 프로세스 종료 요청으로 끝남.CPU burst 분포: 짧은 CPU burst가 많고 긴 CPU burst는 드물며, 분포는 지수적 또는 초지수적.I/O 중심 프로그램: 짧은 CPU burst가 많음.CPU 중심 프로그램: 긴 CPU burst가 적음.스케줄링 중요성: 이러한 분포를 고려해 CPU 스케줄링 알고리즘을 구현해야 함.5..