CS/OS 43

[운영체제] Address Binding

오늘은 Address Binding에 대해서 알아봅시다. Address Binding Address Binding이란 logical 주소를 physical 주소로 변환하는 과정을 말합니다. 여기서 physical address는 실제 메모리 상의 주소를 의미하고, logical address는 CPU가 프로세스를 바라볼 때의 주소를 의미합니다. 가상 주소라고도 불립니다. 이러한 Address Binding에 있어서의 3가지 방식이 존재합니다. 이번 글에서는 이 3가지 방법에 대해서 다뤄봅시다. Address Binding at Compile time 첫 번째 방법은 컴파일 시점에 physical Address를 정하는 것입니다. 컴파일 시점에 Address Binding을 진행하게 되면, Logical ..

CS/OS 2023.11.28

[운영체제] 메모리 관리 - Memory Partitioning

오늘은 메모리 관리에 대해서 알아봅시다. 메모리 관리 메모리 관리는 크게 메모리 할당, 메모리 보호로 나뉩니다. 메모리 할당은 프로세스에게 메모리 공간을 부여하고 해당 공간에 프로세스에 대한 정보(context)를 삽입하는 과정을 말합니다. 메모리 보호는 허용되는 메모리 공간에만 접근되도록 감시하는 것을 말합니다. Memory Partitioning 메모리의 크기는 한정되어 있습니다. 따라서 우리는 이러한 메모리를 효율적으로 프로세스에게 배정하고 관리해야합니다. 따라서 메모리를 효율적으로 배정하기 위한 방법들이 제시되었습니다. 우리는 그 중에서 Fixed Partitioning, Dynamic Partitioning, Buddy System에 대해서 알아봅시다. Fixed Partitioning Fixe..

CS/OS 2023.11.27

[운영체제] RAID

RAID에 대해서 알아봅시다. RAID RAID는 Redundanct Array of Inexpensive Disks의 줄임말로, 저렴한 디스크를 여러개 사용하여 용량이 크고 성능이 우수한 디스크처럼 작동하게 하는 디스크 구성 방식을 의미합니다. RAID의 방식에는 여러가지 기법이 있습니다. 차근차근 하나씩 알아가봅시다. RAID 0 (non-redundant) RAID 0은 데이터를 하나의 디스크가 아닌 여러 개의 디스크에 나눠놓는 기법을 말합니다. 이 기법은 데이터를 부분적으로 잃었을 때, 손실되지 않은 데이터로 일부 복원이 가능한 기법을 말합니다. 이 그림에서 strip은 일반적으로 데이터의 저장 단위를 의미합니다. OS에서는 block을 의미하겠죠. RAID 1 (mirrored) RAID 1은 ..

CS/OS 2023.11.27

[운영체제] 디스크 스케쥴링

오늘은 디스크 스케쥴링에 대해서 다뤄봅니다. 디스크 디스크는 우리가 생각하는 기본적인 cd도 디스크가 될 수 있지만 통상적으로는 hard disk에 쓰이는 disk들을 디스크라고 부릅니다. cd는 한쪽 면만을 사용해서 데이터를 저장하는 방식이라면 hard disk의 저장장치는 양면을 모두 저장공간으로 사용하죠. 우선 디스크의 구조에 대해서 알아봅시다. 디스크는 우측과 같은 구조로 이루어져있습니다. 하나의 띠가 track을 의미합니다. track은 바깥에서 안쪽으로 갈수록 idx가 증가합니다. 섹터는 디스크 제조사에서 설정한 데이터의 최소 저장 단위입니다. 섹터가 모여 track을 구성합니다. 하나의 disk당 20~1500개의 track을 가지게 됩니다. 디스크들이 모여 이러한 층을 통상 이룹니다. 실제..

CS/OS 2023.11.12

[운영체제] I/O 제어

이번에는 운영체제가 device driver를 통해서 장치를 제어하는 방식에 대해서 다뤄보겠습니다. I/O 제어 방법 운영체제가 I/O 장치를 제어하는 방식은 크게 3가지로 나눌 수 있습니다. Polling, Interrupt-driven I/O, DMA가 있습니다. 이 세가지에 대해서 다뤄보겠습니다. 그 전에, Interrupt가 발생하면 어떠한 수행과정을 통해서 동작이 수행되는지를 다시 한번 상기해봅시다. 1. 디바이스는 Status Register, Control Register, Data-in Register, Data-out Register로 구성되어 있습니다. 또한 device는 command-ready, busy, error의 상태를 갖습니다. 2. 가장 먼저 device driver가 de..

CS/OS 2023.11.11

[운영체제] 인터럽트 처리

오늘은 운영체제가 인터럽트를 처리하기 위한 방법을 알아보도록 하겠습니다. 인터럽트를 처리하기 전에 우리는 잠깐 mode change의 내용을 떠올려봅시다. 2023.09.23 - [Computer Science/운영체제] - [운영체제] 3-3. 프로세스 스위치 mode change를 통해서 user mode에서 kernel 모드로 진입하게 되는데, 이러한 kernel mode entry pointsms 총 3가지가 있습니다. Interrupt, Trap, System call. 우리는 Interrupt를 처리하는 과정을 다루면서 동시에 Trap와 System call을 어떻게 처리하는지 알아봅시다. Interrupt 우선 간략하게 Interrupt에 대해서 다시 알아봅시다. Interrupt는 비동기 ..

CS/OS 2023.11.11

[운영체제] 입출력 관리

오늘은 입출력 장치에 대해서 알아봅시다. 입출력 장치 입출력 장치는 mechanical part와 electronic part로 이루어져 있습니다. 이 중에서 electric part를 우리는 Controller라고 부르기도 합니다. Controller에는 Control Register, Status Register, internal buffer 등으로 이루어져 있습니다. Control Register는 해당 레지스터의 비트를 1로 만듦으로써 정해진 연산 또는 동작을 수행하게 하는 역할을 합니다. Status Register는 해당 디바이스의 상태를 나타냅니다. I/O가 잘 수행되었는지, 에러가 있는지 등을 Status Register의 특정 비트를 확인함으로써 알 수 있습니다. Internal Buff..

CS/OS 2023.11.11

[운영체제] 리눅스의 파일 시스템

이전 글에서 다뤘던 파일 시스템의 예제 중 하나인 리눅스에 대해서 알아봅시다. Address of Data Blocks 리눅스에서는 데이터 블록 할당 기법 중에 indexed allocation method를 사용합니다. indexed allocation method는 이전 글에서 설명했으므로, 해당 글을 참고해주시기 바랍니다. 우리는 이번 글에서 조금 더 메모리 용량에 관한 부분을 알아봅시다. 보통 데이터 block은 1개당 4kb입니다. 또한 리눅스에서의 file control block의 구조를 보고 하나의 file에 사용할 수 있는 최대 용량을 알아봅시다. 리눅스의 file contro block 형태입니다. 위에 것은 무시하고 direct block와 indirect block을 살펴봅시다. 말..

CS/OS 2023.11.02

[운영체제] 파일 시스템

오늘은 파일 시스템에 대해서 알아보겠습니다. 파일 시스템 파일 시스템은 파일을 저장하는 거대 자료구조로, 여러 물리적인 파일의 종류별로 효율적인 관리를 위해 사용되는 시스템입니다. 리눅스 운영체제 기준으로 파일 시스템에는 boot block, super block, FCB list(inode list), data blocks가 있습니다. Boot Block boot block은 최초 운영체제 실행 시, 보조기억 장치에서 운영체제 이미지를 불러와 실행시키는 역할을 합니다. 운영체제 최초 실행 시, boot block을 메인 메모리로 복사하고 OS의 위치를 파악합니다. 이후, 보조기억장치에서 OS의 위치로 접근하여 OS를 메모리에 로드합니다. 이렇게 되면 OS가 최초로 실행하는 다양한 작업(프로세스 생성, ..

CS/OS 2023.10.28

[운영체제] 디렉토리

오늘은 디렉토리에 대해서 알아봅니다. 디렉토리 디렉토리는 파일의 속성을 저장하는 파일을 의미합니다. 정확히는 file의 이름과 FCB의 식별자만을 저장합니다. 디렉토리에 파일을 복사하여 저장하는 것은 비효율적이기 때문이죠. 보통 디렉토리에 저장되는 정보들은 아래와 같습니다. 여기서 inode는 index node의 약자로 리눅스에서의 FCB를 호칭명입니다. 디렉토리에는 현재 파일과 상위 파일의 정보까지 저장한다는 것을 기억해두시면 좋습니다. Hierachical Directory 우리가 흔히 쓰는 디렉토리는 계층 구조를 가집니다. 가장 루트 노드를 필두로 하여 여러 디렉토리들이 있고 이러한 것을 계층으로 관리하기 때문이죠. 이러한 계층 구조를 이용해서 디렉토리가 파일을 찾는 과정을 예시를 통해 확인해봅시..

CS/OS 2023.10.28