CS 37

26. File System

파일 시스템이란 루트 디렉터리부터 모든 서브 디렉터리까지 계속적으로 연결된 트리로 볼 수 있습니다. (사용자의 관점에서는 디렉터리와 파일들의 계층적인 구조), OS 입장에서는 스토리지 디바이스 위에 포맷된 볼륨으로 볼 수 있습니다. (스토리지 디바이스 위에 저장된 디스크 블록의 집합체) 위에서는 파일 시스템이 데이터 컨텐츠를 저장한다는 측면에 대해서만 설명했지만 사실 파일 시스템은 더 많은 일을 합니다. 우선 저번에 공부했듯이 모든 로지컬/피지컬 리소스에 대한 name space를 제공해 줍니다. (해당 리소스에 쉽게 접근할 수 있도록 window에서는 C:\window\home 이런 식으로 제공) 그리고 파일 시스템은 파일과 디렉토리에 할당된 디스크 블록을 표현해 주기 위한 다양한 데이터 구조를 가지고..

CS/Operating System 2024.02.03

25. Files and Directories

파일을 액세스 하기 위해서는 몇 가지 개념을 이해해야 합니다. 첫 번째가 파일 디스크립터(File discriptor)로 어떤 프로세스가 open 한 파일을 명명해 주는 ID입니다. 사용자가 설정하지 않아도 open 되는 파일이 존재합니다. standard input/output/error로 각각 0번, 1번, 2번 discriptor를 받습니다. 그다음부터 열리는 파일의 경우 3번 file discriptor를 받습니다. 즉 discrpitor는 프로세스가 오픈한 파일들에 대해서 순차적으로 부여된 id로 기본적으로 0, 1, 2가 사용되기 때문에 3번부터 시작이 됩니다. 파일 디스크립터 외에도 C의 standard library를 통해서 파일을 액세스 할 수 있습니다. 이 경우 파일 스트림, 파일 포인..

CS/Operating System 2024.02.03

24. Device Drivers

하드디스크 드라이버는 하드디스크라는 I/O 디바이스를 구동하는 시스템 소프트웨어(펌웨어)입니다. 드라이버는 OS의 한 부분으로 애플리케이션과 I/O 디바이스 사이에 존재하며 애플리케이션이 I/O 디바이스를 사용할 수 있게 도와줍니다. 그래서 디바이스 드라이버는 I/O 컨트롤러에 있는 레지스터를 읽고 쓰는 코드로 이루어져 있습니다. 추가적으로 I/O 컨트롤러가 I/O 오퍼레이션이 종료되었을 때 CPU하게 이슈하는 인터럽트 서비스 루틴도 들어있습니다. UNIX OS를 통해서 어떻게 I/O 디바이스을 구별하고 디바이스 드라이버 루틴을 찾아 호출할 수 있는지 알아보겠습니다. 우선 I/O 디바이스를 파일 형태로 이름을 붙여 구별을 합니다. 이 디바이스 파일에 어떤 정보가 들어있는지 알아보기 위해서 dev 디렉터리..

CS/Operating System 2024.01.31

23. I/O Device 관리

PC 내부에는 다음과 같은 메인보드에 CPU, memory, hard disk drive 등의 다양한 I/O 디바이스가 있습니다. 이런 디바이스들을 전부 I/O bus에 연결되어 있습니다. I/O bus와 I/O 디바이스 사이에는 I/O controller가 존재하며 CPU로부터 받은 I/O instruction을 수행합니다. I/O controller는 I/O bus에 인터페이스 하기 위한 bus interface logic을 가지고 있고 I/O 디바이스를 제어하기 위한 인터페이스도 가지고 있습니다. 그리고 내부에 레지스터들이 들어 있는데 이 레지스터는 데이터 레지스터와 컨트롤 레지스터로 나뉩니다. 데이터 레지스터에는 디바이스로부터 읽어온 정보를 저장하는 input data register와 출력할 정..

CS/Operating System 2024.01.30

22. Trends in Memory Management

OS는 대부분 high level language로 구현되어 있으며 OS가 포팅된 하드웨어와 무관하게 구현될 수 있지만 반대로 타겟 하드웨어 특성에 굉장히 민감한 부분도 존재합니다. 이 부분은 context switching을 담당하는 부분입니다. context switching은 CPU에 있는 레지스터들의 속성을 이용해서 조정하는 일들을 많이 진행하기 때문에 그렇습니다. MMU라는 하드웨어를 기반으로 동작을 하는 Memory manageement 부분도 하드웨어와 밀접하게 관련이 있는 부분입니다. 그렇기에 하드웨어가 발전하게 되면 OS의 memory management 부분도 같이 변화해야 합니다. 페이징 매커니즘을 공부하면서 몇 가지 단점에 대해서도 알아봤습니다. 메모리 액세스의 성능이 저하되는 문제..

CS/Operating System 2024.01.29

21. Trashing and Working set

컴퓨터 시스템이 감당할 수 있는 양보다 더 많은 양의 워크로드를 돌릴 경우 성능 저하를 피할 수 없습니다. 이 성능 저하는 프로세스 개수에 비례해서 linear 하게 나빠지는 것이 아닌 어느 시점에서 급격한 성능 저하가 발생하게 되는데 이것을 쓰레싱(Thrashing)이라고 부릅니다. 쓰레싱이 생기는 이유는 페이지 프레임의 개수는 적은데 프로세스들이 더 많은 페이지를 자주 사용하면서 발생합니다. 공간이 좁기 때문에 가까운 미래에 사용할 페이지를 쫓아내고 자리를 만든 다음 페이지 폴트가 발생해 페이지를 들고 오는 것이 반복되어 page fault rate가 증가하게 됩니다. 이러면 메모리가 아닌 swap area에 액세스해서 페이지를 가지고 오는데 이 속도가 너무 느리기 때문에 버츄얼 메모리의 이점을 살리..

CS/Operating System 2024.01.27

20. Demand Paging

virtual memory management는 디멘드 페이징(Demand paging)을 합니다. 디멘드 페이징은 위와 같은 4가지 정책(policy)을 따릅니다. page selection은 페이지 폴트가 발생했을 때 요청된 페이지만 읽어오는 것이 아니라 locality를 생각해 주변에 있는 페이지까지 읽어오는 것을 고려합니다. page replacement는 새로운 페이지를 메모리에 적재할 때 메인 메모리에 사용할 수 있는 페이지 프레임이 없다면 다른 프로세스의 페이지를 뺏어와야 하는데 수많은 페이지 프레임에서 어떤 것을 뺏어올지 결정해줍니다. page frame allocation은 같은 page frame pool에서 페이지 프레임을 할당하는 global allocation을 할지 아니면 프로세..

CS/Operating System 2024.01.26

1. Introduction to System Programming

- 이 포스터는 KOCW에서 제공되는 남해운 교수님의 시스템 프로그래밍의 기초를 바탕으로 작성되었습니다. 컴퓨터 시스템 3가지로 구성되어 있습니다. 컴퓨터 하드웨어를 기반으로 OS가 그 위에서 동작하며 마지막 위에는 우리가 사용하기 원하는 응용 프로그램들을 실행하게 됩니다. 임베디드 시스템의 경우 임베디드 하드웨어와 임베디드를 위한 OS를 사용하는 것을 제외하고는 비슷한 양상을 보입니다. 컴퓨터 시스템의 내부 구조를 더 자세히 알아보겠습니다. 하드웨어 부분에는 CPU와 I/O 디바이스, 보조기억장치, 주기억장치가 존재합니다. 이 하드웨어 위에 OS가 존재하는데 이때 하드웨어와 가장 처음에 맡닫는 부분을 Archtecture dependent kernel이라고 부릅니다. 32bit인지 64bit인지, CP..

19. Memory Management Mechanism

페이징 메커니즘은 현대 OS의 메모리 관리 기법을 구현하기 위한 핵심적인 메커니즘입니다. 이번에는 페이징 기법을 통해서 프로세스의 메모리를 효율적으로 관리하는 정책에 대해 알아보겠습니다. 프로세스 스케줄러를 설계할 때 정책과 메커니즘을 구별해서 설계해야 합니다. 어플리케이션 마다 사용하는 스케줄러 정책이 다를 수는 있지만 context switching 메커니즘은 동일하게 동작해야 합니다. OS의 메모리 관리 부분도 동일하게 적용되는데 이때 페이징 기법이 바로 메커니즘이 됩니다. 페이징 기법은 MMU라는 매핑 하드웨어로 페이지 테이블이라는 매핑 정보를 통해 CPU가 이슈한 로지컬 어드레스를 실제 피지컬 메모리 주소인 피지컬 어드레스로 변환을 해줍니다. 이렇게 매핑 하드웨어와 매핑 테이블 전체를 매핑 메커..

CS/Operating System 2024.01.25

18. Enhancing Mechanisms

segmentation, paged segmentation 이렇게 메모리 관리 기법에 대해 공부했지만 이 방법들은 현재 OS에서 사용하지 않는 방법입니다. 현대 OS는 페이징(paging) 만을 사용해서 메모리를 관리하는데 이때 사용하는 메커니즘들에 대해서 알아보겠습니다. 페이징은 굉장히 좋은 메모리 관리 기법이지만 메모리 액세스를 할 때마다 메인 메모리에 있는 페이지 테이블을 사용한다는 점과 페이지의 크기가 작고 로지컬 어드레스 스페이스가 크기 때문에 페이지의 개수가 많아지는 문제가 존재했습니다. 추가적인 메모리 레퍼런스를 한 번 더하는 문제와 페이지 테이블의 사이즈가 커져 메인 메모리에 자리를 많이 차지하는 문제가 존재 (slow memory access, large page table) Slow m..

CS/Operating System 2024.01.24
반응형