본문 바로가기

Concepts/OS5

File System - 출처: Operating System - Three Easy Pieces 개요만약 우리가 File system 을 구현해야 한다면 크게 2가지 측면을 고려해야 한다.Data strcutures: data와 metadata를 구성하기 위해 어떤 유형의 구조로 설계할것인가?Access methods: open(), read(), write() 등과 같은 process에 의한 호출을 어떻게 구조에 맵핑할것인가?전체 구조vsfs 파일 시스템의 데이터 구조를 설계한다고 가정해보자. 가장 먼저 해야할것은 무엇인가? 가장 먼저 해야하는것은 disk를 "block" 단위로 나누는것이다. 이 "block"을 4 KB 로 사용한다고 가정하자.위처럼 block에는 0 ~ N-1 주소가 부여되며 각 block의 크기는 4.. 2024. 11. 3.
Limited Direct Execution - 출처: Operating System - Three Easy Pieces - 개요CPU 가상화의 기본적인 개념은 하나의 process를 잠시 동안 실행하고, 그 후 다른 process 를 실행하는식으로 진행하는 time sharing 이다. 가상화의 가장 중요한 요소는performance: 추가적인 overhead 없이 가상화 구현control: CPU 에 대한 제어를 하면서 효율적으로 process 실행한다. 제어를 하지 않으면 하나의 process 가 machin 을 영원히 점유하거나 접근하면 안되는 자원에 접근할 수 있게 된다.결국 올바른 제어를 하면서 좋은 성능을 내는것이 OS 의 주요 과제이다.- Limited Direct Execution프로그램을 가장 빠르게 실행하는 방법은 CPU 상에.. 2024. 5. 25.
Process API - 출처: Operating System - Three Easy Pieces - 개요UNIX 시스템은 fork()와 exec() system call 을 통해 process를 생성한다. 또한 wait() 을 사용하면 process 를 대기할 수도 있다. 이와 관련된 실질적인 예제를 더 자세히 살펴보면서 실제 이런 system call 들이 어떤 방식으로 사용되는지 감을 익혀보자.- fork() system callfork() system call 은 새로운 process를 생성하는데 사용된다. #include #include #include int main(int argc, char *argv[]) { printf("hello world (pid:%d)\n", (int) getpid()); i.. 2024. 5. 15.
Process Abstraction - 출처: Operating System - Three Easy Pieces- 개요Process 란 무엇인가? 한마디로 정의하기에는 너무나 중요하고 복잡하지만 그중 가장 간단하고 직관적인 정의는 "프로그램 을 실행하는것"이다. 프로그램 자체는 생명주기를 갖지 않는다. 프로그램은 저장 장치(ex - Disk)에 존재하는데, 사용자가 실행하면 OS는 이를 가져와서 실행한다. 우리는 프로그램을 1개만 실행하지 않는다. 웹 브라우저를 켜놓고 게임을 하면서 음악을 듣는다. 시스템은 어느 CPU가 여유가 있어서 사용가능한지 신경쓰지 않는다. 이렇게 CPU 보다 많은 프로그램을 실행할 수 있는것은 OS가 CPU 가상화를 제공해서 가능하다.어떻게 CPU 가상화를 하길래 이런 상황이 가능한가? 여러 기술이 있겠지만 하나.. 2024. 5. 5.
Introduction OS - 출처: Operating Systems - Three Easy Pieces개요Program을 실행한다는 것은 무엇인가? 많은 정의가 있을 수 있지만 그중 가장 직관적인 정의를 꼽으라면 "명령어를 수행하는것"이라고 할 수 있을것이다. OS는 Program을 수행할 때 다음과 같은 과정을 수행한다.Processor가 Memory로 부터 명령어(instruction)을 가져온다.이를 해석(decode)하고 실행(execute)한다.위 과정을 반복한다.OS의 가장 근본적인 책임은 많은 application 을 동시에 잘 수행될 수 있도록 하는것이다. 컴퓨터의 1 application이 1개의 memory만 점유하는것이 아니라 여러 개의 application이 memory를 공유한다. 또한 applicatio.. 2024. 5. 3.