본문 바로가기

컴퓨터공학/운영체제14

OS 14. File System Implementation 서론 파일 시스템은 데이터와 프로그램을 포함하여 파일 내용의 온라인 접근과 온라인 저장을 위한 기법을 제공한다. 보통 파일 시스템은 많은 양의 자료를 보관하도록 설계된 보조저장장치에 영구적으로 상주한다. File system implementation 파일 시스템 구현은 사용자와 저장 관리의 관점에서 이루어진다. 사용자 관점에서는 파일 시스템 인터페이스를 통해 파일과 디렉터리를 다루며, 저장 관리 관점에서는 논리적 파일 시스템을 저장 장치에 매핑하고 구현을 위한 레이아웃, 데이터 구조, 알고리즘 등을 고려한다. 파일 시스템은 저장 장치를 블록의 시퀀스로 다루며, 데이터는 블록 단위로 전송된다. 각 파일에는 속성과 파일 데이터가 저장되어야 한다. Unix 파일 시스템에서는 아이노드(Inode)를 사용하여 .. 2023. 5. 19.
OS 13. File System Interface 서론 사용자 대부분에게 파일 시스템은 가장 많이 노출되는 범용 운영체제의 부분이다. 운영체제와 컴퓨터 시스템의 모든 사용자의 데이터와 프로그램을 온라인으로 저장하는 실제적인 파일의 집합체와 시스템 내의 모든 파일에 관한 정보를 제공하는 디렉터리 구조로 구성된다. 파일의 다양한 면과 주된 디렉터리 구조에 관해서 살펴보고 다중 프로세스, 사용자 그리고 컴퓨터 간에 파일을 공유하는 의미를 알아보자. File system 파일 시스템은 컴퓨터 시스템에서 데이터를 조직화하고 저장하는 방법이다. 파일 시스템은 사용자 관점과 저장 관리 관점에서 다룰 수 있다. 사용자 관점에서 파일 시스템은 파일과 디렉터리의 트리 구조로 표현된다. 사용자는 파일 시스템 인터페이스를 통해 파일을 생성, 읽기, 쓰기, 삭제하는 등의 작업.. 2023. 5. 19.
12. I/O Systems 서론 컴퓨터의 두 가지 주요 작업은 계산(computing)과 입축력 작업(I/O)이다. 많은 경우 계산 혹은 연산 처리 작업은 부수적이며 입출력 작업이 중요하다. I/O Hardware Modern I/O Systems 현대에는 엄청나게 많은 종류의 I/O 장치가 있다. CPU는 장치 컨트롤러을 통해 이들과 상호 작용한다. 장치 컨트롤러에는 읽고 쓸 수 있는 일련의 레지스터가 포함되어 있다. Programmed I/O 프로그램 제어 입출력(Programmed I/O)은 포트 입출력(Port I/O)과 메모리 맵 입출력(Memory-mapped I/O)로 구성된다. 포트 입출력에서는 특수한 프로세서 명령어를 사용하여 데이터를 전송한다. 예를 들어, 인텔 아키텍처에서는 in/out 명령어가 있다. 또한, .. 2023. 5. 18.
OS 11. Mass-Storage Structure 서론 컴퓨터의 비휘발성 저장장치 시스템인 대용량 저장장치가 어떻게 구성되어 있는지 알아보자. 많은 유형의 대용량 저장장치가 있으며, 모든 유형에 해당하는 내용일 경우 NVS(비휘발성 저장장치, non-volatile storage)라는 용어를 사용하거나 저장장치 "드라이브"에 대해 이야기한다. Disk Structure Hard Disks 하드 디스크의 플래터 크기는 .85인치에서 14인치까지 다양하며, 주로 3.5인치, 2.5인치, 1.8인치 크기가 일반적으로 사용된다. 하드 디스크의 용량은 드라이브 당 30GB에서 3TB까지 다양하며 성능 측면에서, 이론적인 전송 속도(Transfer Rate)는 6Gb/초이지만, 실제로는 1Gb/초의 실제 전송 속도를 가지고 있다. 탐색 시간(Seek time)은 .. 2023. 5. 18.
OS 10. Virtual Memory 서론 메모리의 여러 관리 전략에 대해 논의하였다. 이러한 전략들은 모두 목적이 같다. 즉, 다중 프로그래밍을 실현하기 위해 메모리에 많은 프로세스를 동시에 유지하는 것이다. 그러나, 지금까지의 접근 방시은 프로세스 전체가 실행되기 전에 메모리로 올라와야 한다는 것을 전제로 하고 있다. 그렇기에 우리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법인 가상 메모리(Virtual Memory)를 알아보자. Virtual Memory Concepts 가상 메모리는 제한된 물리 메모리 크기로 인해 실행되지 못할 프로그램을 실행할 수 있게 해 준다. 프로그램은 전체가 아닌 일부만 실행되기 때문에 필요한 부분만 메모리에 로드된다. 예를 들어, 큰 배열의 경우 실제로 사용되는 부분만 메모리.. 2023. 5. 18.
OS 9. Main Memory 서론 CPU스케줄링의 결과로 CPU 이용률과 사용자에 제공하는 컴퓨터 응답속도를 모두 향상할 수 있다. 그러나 이러한 성능 향상을 실현하려면 많은 프로세스를 메모리에 유지해야 한다. 즉, 메모리를 공유해야 한다. 메모리를 관리하는 다양한 방법에 대해 알아보자.(대부분의 알고리즘은 하드웨어와 운영체제 메모리 관리를 밀접하게 통합해야 한다.) 주소 바인딩(Address binding) 주소 바인딩이란 프로그램 명령어와 데이터를 물리적 메모리 주소에 연결하는 과정을 말한다. 주소 바인딩은 세 단계에서 발생할 수 있다. 컴파일 타임 바인딩(Compile time binding) 로드 시간 바인딩(Load time binding) 실행 시간 바인딩(Execution time binding) 컴파일 타임 바인딩(C.. 2023. 5. 18.
OS 8. Deadlocks 서론 다중 프로그래밍 환경에서는 여러 스레드가 한정된 자원을 사용하려고 서로 경쟁할 수 있다. 한 스레드가 자원을 요청했을 때, 그 시각에 그 자원을 사용할 수 없는 상황이 발생할 수 있고, 그때는 스레드가 대기 상태로 들어간다. 이 처럼 대기 중인 스레드들이 결코 다시는 그 상태를 변경시킬 수 없으면 이런 상황을 교착상태(Deadlocks)라 부른다. 교착 상태(Deadlocks) 교착 상태는 프로세스 집합 내의 모든 프로세스가 그 집합의 다른 프로세스에 의해서만 일어날 수 있는 이벤트를 기다리는 상황이라고 정의할 수 있다. 교착 상태를 간단히 이해하기 위해 7장의 식사하는 철학자 문제를 상기해 보자. 이 상황에서 자원은 젓가락으로 표시된다. 모든 철학자가 동시에 배가 고프고 각 철학자가 왼쪽에 있는 .. 2023. 5. 16.
OS 7. 동기화 예제 서론 임계구역 문제를 제시하고 여러 병행 프로세스가 데이터를 공유할 때 어떻게 경쟁 조건이 발생할 수 있는지에 중점을 두었다. 계속해서 경쟁 조건이 발생하지 않도록 하여 임계구역 문제를 해결하는 몇 가지 도구를 검토하였다. 고전적인 동기화 문제들(Classical Problems of Synchronization) 유한 버퍼 문제(Bounded-Buffer Problem) 이 문제는 일반적으로 동기화 프리미티브(primitive)들의 능력을 설명하기 위하여 사용된다. 어느 특정 구현에 국한됨 없이 이 해결 방법의 일반적인 구조를 제시한다. int n; // 필수 세마포 semaphore mutex = 1; semaphore empty = n; semaphore ful = 0; N개의 버퍼로 구성된 풀(p.. 2023. 4. 6.
OS 6. 동기화 도구(Synchronization Tools) 서론 협력적 프로세스(collaborative process)는 시스템 내에서 실행 중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스이다. 협력적 프로세스는 노리 주소 공간(코드 및 데이터)을 직접 공유하거나 공유 메모리 또는 메시지 전달을 통해서만 데이터를 공유할 수 있다. 그러나 공유 데이터를 동시에 접근하면 데이터의 일관성을 망칠 수 있다. 이 논리 주소 공간을 공유하는 협력적 프로세스의 질서 있는 실행을 보장하여, 이를 통해 데이터의 일관성을 유지하는 다양한 도구들을 소개한다. 임계구역 문제 프로세스 동기화에 관한 논의는 임계구역 문제로 부터 시작된다. 경쟁 상황(Race Condition) 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한.. 2023. 4. 6.
반응형