본문 바로가기

프로그래밍/운영체제

(22)
[운영체제] Disk Management and Scheduling 이제 디스크 관리를 알아보자 Sector - 디스크 관리하는 최소 단위 저장은 Sector 단위로 되어있지만 , 외부에서 데이터를 요청할때는 Logical block 단위다. Logical block 이 Sector에 맵핑이 되어있다. 피지컬 포맷팅 - 공장에서 디스크를 만들때 섹터 단위로 나누게 되는데 이 작업을 Physical formatting 이라 한다. 파티셔닝 - 디스크를 하나 이상의 그룹으로 나누는 과정 (C드라이브, D드라이브) 로지컬 포맷팅 - 해당 파티션에 파일 시스템을 설치 하는 경우를 말한다. 부팅 - 메모리가 전원이 나가도 저장이되는 아주 소량의 부분 ROM 에 부팅을 위한 로더가 저장되어있다. 디스크가 접근하는 엑세스 타임은 3가지로 구성된다. Seek Time - 디스크 헤드가..
[운영체제] Page Cache and Buffer Cache 페이지 캐시는 운영체제의 주어지는 정보가 제한적이었다. 버퍼 캐시 - 파일의 데이터를 운영체제가 읽어온 내용을 자기 영역에 저장해놓고 이 파일을 다른 프로세스가 요청하면 디스크로 가지 않고 바로 데이터를 주게된다. 최근에는 Unified Buffer Cache 로 합쳐서 관리한다. Buffer cache도 페이지 단위로 관리한다. 페이지 캐시는 메모리 관리할때 페이지 프레임들을 두고, 페이지 프레임에 당장 필요한 내용을 메모리에 올려두고 필요하지 않은 애들을 쫒아내는 것이었다. 그걸 캐시에 관점에서 페이지 캐시라고 한다. 버퍼 캐시는 파일을 읽고 그 내용을 커널 영역에 저장해뒀다가 다른 프로세스가 요청하면 데이터를 주는 형식이었다. 페이지 캐시는 프로세스의 주소 공간의 페이지가 Swap area 로 내려..
[운영체제] File System Implementation 파일을 접근하는 방법이 2가지가 있다. 직접 접근은 특정 위치로 접근 한 후 다른 위치로 바로 접근 할 수 있다. a,b,c 가 있다고 가정할때 순차접근은 a를 보고 c를 보고 싶으면 무조건 b도 봐야하는것 직접 접근은 건너뛰고 바로 c를 볼 수 있다. 디스크에 파일을 저장하는 방법은 3가지가 있다. 디스크에 동일한 크기의 섹터를 나눠서 저장을 한다. 페이징기법과 좀 유사하다. 하나의 파일이 디스크 상에 연속해서 저장되는 방법이다. 장점과 단점이 있다면? 외부 조각이 생길수있다. 3개의 섹터를 가진 파일을 넣으려고 할때 위 이미지에 17,18번엔 들어갈 수 없게 된다. 파일의 크기는 변경될 수 있는데 , 이 방법을 쓰면 크기가 커지는데 제약이있다. 대신 이 방법의 장점은 빠른 I/O가 가능하다는 것 대부..
[운영체제] File and File System 메모리는 주소를 통해 접근하는 장치였다면, 파일이라는건 이름을 단위로 접근하는 것 파일의 메타데이터는 파일의 각종 정보들을 저장하는 정보 파일 시스템은 운영체제에서 파일을 관리하는 부분 디렉토리도 하나의 파일이다 운영체제가 보는 디스크는 논리적인 디스크고 이걸 다른말로 파티션이라고 한다. D드라이브 C 드라이브 처럼 파티션으로 나눌수있다. 이 파티션에 파일시스템을 설치하거나 swapping 등의 용도로 사용할수있다. 파일의 operation 중 open() 을 봐보자 파일의 메타데이터를 메모리로 올려놓는 작업이다. c의 메타데이터를 메모리로 가지고온다. 근데 디렉토리 경로가 계층으로 되어있을때 open 하라고 하면 c의 메타데이터 위치를 디스크에서 찾아야한다. root 디렉토리 경로는 알고있어서 root..
[운영체제] Virtual Memory 2 - Clock , Working set, PFF 이 replace ment 알고리즘은 꼭 virtual memory 에서만 발생하는게 아니다 한정된 빠른공간에 요청된 데이터를 저장해 두었다가 다시 요청이 오면 캐시에서 데이터를 준다. 캐싱 기법 캐시메모리(메모리에 접근 전에 사용되는 저장공간) , 버퍼 캐싱(파일 시스템에 대한 read/write 요청을 메모리에서 빠르게 서비스하는 방식) , 웹 캐싱(웹 페이지에 대한 요청을 웹서버에 다시 다녀오지 않고 읽어왔던 메모리를 저장해놨다가 보여주는 형태) 등 다양한 분야에서 사용된다. 그런데, OS는 LRU, LFU 를 사용할 수가 없다. OS 는 page fault 가 났을때만 , 제어권을 갖기 때문에 그 전에 어떤게 자주 사용되었고, 어떤게 최근에 쓴건지 알수가 없다. 그래서 사용되는 알고리즘 각각의 사..
[운영체제] Virtual Memory - FIFO, LRU, LFU 이전에 봤던 논리 주소의 메모리 변환은 운영체제가 관리하지 않고 하드웨어가 관리했는데, Virtual Memory 변환은 운영체제가 관리하고있다. 요청이 있을때 그 페이지를 메모리에 올리는것 프로그램이 실행될때 그 구성되는 주소 공간에 페이지를 전부 메모리에 올리는게 아니라 Demand Paging 기법을 사용한다. invalid 는 물리적인 메모리(physical memory) 에 없고 디스크에만 있는 상황 CPU 가 invalid-bit 에 접근을 하면 "page fault" 현상 발생 -> cpu 가 운영체제로 넘어가게 된다. 홀드된 페이지를 메모리에 올리게 된다. 진행 순서 1. 잘못된 요청을 아닌지? 확인 한다. 주소가 잘못되었는지 등 2. 빈 페이지 프레임을 획득해야되고, 빈 곳이 없다면 하나..
[운영체제] Memory Management3 - Segmentation code, data ,stack 부분이 하나씩의 세그먼트로 정의됨 세그먼트 테이블 을 둔다. CPU가 논리주소를 주면 2 부분으로 나눈다. s 세그번트 번호와 d 오프셋 세그먼트 테이블에 시작위치는 레지스터가 가지고있다 거기서부터 세그먼트 번호 만큼 떨어진 곳으로 가보면 이 세그먼트가 몇번지 떨어져있는지 값을 가지고있음 페이징과는 다르게 엔트리에 2가지 정보 가지고있다. 시작 외에 limit 을 가지고 있다. 세그먼트 의 길이를 가지고있다. - 페이징은 다 똑같은 크기였지만 세그먼트는 길이가 다를수있기때문에 세그먼트의 크기를 알기위해 길이를 가지고 있다. 세그먼트의 길이가 동일하지 않아서 가변 분할 방식에서와 동일한 문제점.. Segmentation with Paging 이 기법은 세그먼트 하나가 페이지..
[운영체제] Memory Management 2 - Paging 물리적인 메모리를 관리하는 기법 논리 메모리를 각각 page 로 나눠서 물리적인 메모리에 적당한 곳에 올려놓는다. page table 이 사용된다 . 각각의 논리 페이지들이 물리 페이지 어디에 올라가있는지 논리주소 p번째로 가면 물리주소 f 번째로 저장되어있다고 테이블에 적혀있다. 근데 주소변황용 페이지 테이블의 용량이 너무 커진다. 그래서 이걸 메모리에 위치하게 되는데 페이지 테이블 때문에 메모리 접근을 2번하게 되는데 이걸 빠르게 접근하기위해 TLB 라는 하드웨어 캐시를 사용한다. 마치 캐시메모리 처럼 (데이터를 보관하는 캐시는 아니지만), 주소 변환을 위한 캐시메모리 장치 - 페이지 테이블에서 빈번히 사용되는애를 캐시하고 있다. (TLB 에 없는경우는 평상시처럼 메모리접근을 2번한다) 메모리는 바이..