컴퓨터 공학 (27) 썸네일형 리스트형 디스크 관리 이번에는 CPU, 메모리에 이어 디스크 관리에 대해 알아보려한다. 디스크는 보조기억장치로 메모리의 휘발성, 공간제약성을 보조하기 위한 기억장치이며 구성요소는 다음과 같다. 1. Sector, Block 메모리와 비슷하게 디스크도 메모리가 바라보는 논리 주소, 실제 데이터가 저장되는 물리 주소를 가지고 있다. 여기서 기본 논리 단위를 Block, 물리 저장 단위를 Sector(Header + Data + Trailer) 라고 한다. 2. Formatting Physical Formatting : Disk Sector Initialize Logical Formatting : File System (FAT, Inode, Free Space) : Initialize 3. Partion 1개의 논리적 디스크를 의.. 파일 시스템 그동안 운영체제를 공부하며 메모리의 주소를 통해 데이터에 접근하는 HW 적인 방식에 대해 알아보았다. 이번 시간에는 우리가 GUI 를 통해 요청하면 OS 에서 파일의 정보를 가져오는 파일 시스템에 대해 알아보려고 한다. File 이란 '이름' 을 통해 데이터에 접근하는 단위로 OS 에서 파일은 단순한 저장 용도가 아닌 작업 수행을 위한 데이터의 논리적 단위이기도 하다. File System 은 이러한 파일들을 관리하는 체계로 모든 파일들을 파일의 Meta Data 인 File Attribute(Name, Created Time, Permission, Directory, Type, Size etc) 로 관리하며 다음과 같은 연산들을 활용한다. 1. Open/Close 2. Read/Write 3. Crea.. 메모리 관리 - 가상 메모리 이번 시간에는 메모리 관리 간 OS 가 관리하는 가상 메모리 관리에 대해 알아보자. 메모리 관리의 목표는 응용 프로그램의 프로세스의 요구 데이터들을 보다 효율적으로 메모리에 올려 사용하는 것이었다. 그리고 현재에는 순서에 따지지 않고 가용 가능한 빈 공간에 데이터를 넣을 수 있는 Paging 과 프로세스 간 쉽게 데이터를 공유할 수 있는 Segmentation 을 같이 사용한다. 그렇지만 위의 방법은 메모리 물리 주소 관리 중점이며 이는 OS 영역이 아닌 HW 영역이다. 그래서 오늘은 OS 영역인 가상 메모리 관리 방식을 알아보려고 한다. 가상 메모리는 실제 물리 메모리의 물리 주소를 가르키는 논리 주소가 저장되는 공간으로 이 논리 주소가 Page(Segment 는 Page 의 윗 단계) 이고 Page .. 메모리 관리 - Segmentation 메모리 관리 기법 중 하나인 Segmentation 은 불연속 고정 할당 방식인 Paging 과 다르게 데이터에 따라 공간을 할당하는 불연속 가변 할당 방식이다. 기본적인 원리는 Paging 과 비슷하게 논리 주소가 바인딩 된 Table 을 활용해 메모리 인덱싱을 통해 메모리의 물리 주소를 찾는 방식이다. Segmentation 의 Segment 는 프로그램의 함수, 프로세스의 Code, Data, Stack 등으로 구성해 기능별로 나눠 관리가 가능하다. 따라서 모든 Page 에 Bit 를 추가해 관리하는 방식의 Paging 보다 Protection(Public/Private), Sharing(Process Shared Memory) 면에서는 훨씬 효율적이지만 가변 할당 시 문제점인 외부 단편화(기존의 .. 메모리 관리 - Paging 메모리는 프로세스의 데이터를 보다 효율적으로 관리하기 위해서 다양한 메모리 관리 기법을 활용하며 그중에서도 가상 메모리 기법을 가장 많이 사용한다. 가상 메모리는 물리 주소를 연속적으로 저장하는 연속 할당과 순서에 상관 없이 비어있는 공간에 할당하는 불연속 할당이 있으며 이번 시간에는 불연속 할당 기법 중 Paging 에 대해 알아보려고 한다. Paging 은 간단하게 메모리를 Page 라는 단위로 나누어 데이터를 관리하는 방식으로 CPU 가 바라보는 프로세스의 논리주소, 실제 메모리에 저장되는 물리주소(Page 와 매핑되는 공간 = Frame) 그리고 논리주소와 물리주소를 매핑한 Page Table 로 나눠진다. 하지만 Page Table 은 프로세스마다 독립적으로 필요하며 마찬가지로 메모리에 저장되기.. 메모리 관리 메모리는 CPU와 디스크 사이의 주기억장치로 실행 중인 프로그램 들의 프로세스의 데이터들을 저장하는 공간이다. 즉, 메모리 관리는 말 그대로 메모리를 관리하는 기법으로 한정된 크기의 메모리를 보다 효율적으로 사용하는 방법이라고 할 수 있다. 그러면 OS는 메모리를 어떻게 관리해서 보다 효율적으로 사용자가 컴퓨터를 사용할 수 있게 해주는 걸까? 메모리는 일종의 아파트로 데이터라는 입주민이 들어올 수 있는 공간이다. 그리고 데이터가 저장될 공간을 지칭하는 쉽게 말해 데이터가 입주할 아파트 호수를 주소라고 한다. 따라서 모든 프로세스는 자신이 필요한 데이터를 디스크에서 가져와 메모리에 올려 놓고 CPU로 부터 자원을 할당받아 작업을 수행하는데, 문제는 컴퓨터에서 돌아가는 프로세스가 너무 많다는 것이다. 당장 .. Dead Lock (교착 상태) 이번 시간에는 프로세스 동기화의 마지막 Dead Lock 을 알아보자. Dead Lock 은 교착 상태라고도 하며 가장 쉬운 예시로 시골에 가면 흔히 겪는 좁은 1차선 도로로 차를 운전하다가 반대편에서 차가 와서 서로 오도가도 못하는 상황을 생각하면 쉽다. 그리고 누구는 양보해서 긴 시간을 들여 빠져나가야하고 이는 프로세스도 똑같다. 운영체제에서 프로세스 간 교착 상태는 자원을 기다리다가 서로 Lock 된 상태로 대기하는 것을 의미하며 발생 조건은 다음과 같다. 1. 상호 배제 > 프로세스가 작업 중일 때 다른 프로세스는 접근할 수 없다. 2. 자원 비선점 > 자원을 할당 받은 프로세스의 자원을 다른 프로세스가 할당 받을 수 없다. 3. Hold & Wait > 자원을 할당 받으면 작업을 종료할 때 까지.. 프로세스 동기화 문제 이번엔 지난 시간에 이어 유명한 프로세스 동기화와 관련된 예시를 몇 가지 살펴보려한다. 1. 생산자-소비자 중간의 원형 큐가 프로세스 A 와 프로세스 B 의 공유 버퍼(서로 접근하는 공유 메모리)라고 가정하자. 이때 A 는 항상 버퍼 큐에 데이터를 입력하고 반대로 B 는 항상 버퍼에서 데이터를 꺼내간다. 따라서 A 는 생산자, B 는 소비자의 역할이다. 우리는 프로세스 동기화에 의해 기본적으로 프로세스들의 공유 공간은 세마포어로 읽기와 쓰기가 동시에 일어나며 발생하는 데이터 불일치를 방지된다는 것을 알고 있다. 그런데 만약 A 가 데이터를 입력하려고 세마포어 자원을 획득한 상태에서 더 이상 입력할 공간이 없거나 반대로 B 가 데이터를 가져가려고 하는 순간 버퍼에 데이터가 없다면 어떻게 될까? 만약 세마포.. 이전 1 2 3 4 다음