본문 바로가기
컴퓨터/OS

[OS] Three Easy Pieces - Intro

by IT황구 2021. 8. 19.
728x90
반응형

지난학기에 너무 학점을 많이 듣기도 했지만, 너무 비효율적으로 공부를 해서 포스팅도 못했는데, 방학이기도 하니 이제 해보려고 합니다.

https://pages.cs.wisc.edu/~remzi/OSTEP/

 

Operating Systems: Three Easy Pieces

Blog: Why Textbooks Should Be Free Quick: Free Book Chapters - Hardcover - Softcover (Lulu) - Softcover (Amazon) - Buy PDF - EU (Lulu) - Buy in India - Buy Stuff - Donate - For Teachers - Homework - Projects - News - Acknowledgements - Other Books Welcome

pages.cs.wisc.edu

책은 이걸로 공부를 했습니다. 리처드 파인만의 six easy pieces에서 이름을 따 온것이라고 합니다.

물리학의 절반만큼이나 어렵고 많은 내용이라서 그렇다고 합니다. 쩝...

아침마다 독서실에 가서 책을 읽고, 공책에 기록하고 집와서 강의 pdf도 보고 뭐 하고 씁니다.

여러번 읽을수록 느낌이 다르긴 합니다.. ..

지난주에 포스팅 하려던 내용을 짧게 하겠습니다. ( 예전에 3월에 쓴 글과 유사합니다)

1~30page정도에 해당하는 내용입니다.

===================================

Introduction

Program 실행 방법

1. CPU가 Memory에서 instruction을 fetch합니다.

2. 그 fetch한게 어떤 instruction인지 decode 합니다.

3. 그 다음 그 명령을 실행합니다. 명령의 실행이 끝나면 다음 명령어로 넘어갑니다.

OS의 정의

Physical resource(memory,cpu,disk..)를 가져와서(take) 좀 더 general하고 사용하기 쉬운 virtual form 형태로 변환합니다.

가끔 OS를 가상머신이라고도 부릅니다.

-> OS는 resource manager라고 알려져있습니다. (cpu,memory,disk는 system의 resource입니다.) 이런 자원들을 효율적이고 공정하게 돌아가게 해줍니다. 스케줄링이 이런 내용입니다.

그렇다면, OS에게 memory를 할당하고, 파일에 접근하고, Program을 실행하고 이런것은 어떻게 할까요?

바로 OS는 API를 제공합니다(interface) 바로 System call을 이용하게 해줍니다.

Virtualization (가상화)

이것은 여러 프로그램을 돌아가게 해줍니다. (CPU를 sharing해서 돌아가게 합니다)

많은 program을 각자의 instruction과 data에 접근해서 concurrent하게 돌아가게 해줍니다.

메모리도 공유합니다. 여러 장치에서도 접근하기때문에 disk도 공유합니다.

모든 용어들은 나중에 알게 될 것입니다.

여기서 Memory란 뭘까요?

an array of bytes. 바이트 배열로 보면 된다고 하는데, 일반적으로 우리 컴퓨터에서 RAM을 말합니다.

메모리 안에는 instruction들이 있습니다. cpu는 메모리에서 instruction을 가져와서 load, store등을 보고 메모리에 값을 가져오고 쓰고 합니다.

즉 메모리에는 data도 있고, instruction들도 있습니다.

프로세스들은 가상메모리를 사용합니다. 이 가상메모리는 OS가 물리적 메모리를 가상 메모리로 바꿔줍니다.

근거를 대라구요? 눈으로 확인하는 방법이 있습니다.

이 코드를 제가 동시에 2개를 실행시켜 보겠습니다.

교재의 이상적인 시나리오라면, 같은 메모리 주소를 사용하는데, 값이 독립적으로 오릅니다.

이렇게 나올 수 있는 이유는, physical memory가 아니라서 가능한 이야기입니다.

각각의 process는 자기 자신 고유의 address space(virtual address space)에 접근합니다.

OS가 나중에 이 가상메모리를 Physical memory로 매핑해줍니다.

근데!! 막상 직접 해보면 32bit과 64bit의 차이라서, 공간이 넓어가지고 그런건지.. vmware랑 ssh에서 제공하는 linux server 둘 다 저렇게 나오더라구요.. 근데 책에서 그렇다고 하니 .. 이해하고 넘어갑시다.

다음은 Persistence 입니다.

disk를 관리하는 OS의 software를 file system이라고 부릅니다.

Data를 어떻게 영원히 저장할지? concurrency 문제를 어떻게 해결할지? 어떻게 가상화를 할지?

나중에 배우겠지만, file system은 open, close 같은 system call을 이용해서 제어할 수 있습니다.

커널모드로 바꿔주는 previleged instruction 입니다.

위의 내용들을 정리한

OS는 결국

CPU, Memory, disk같은 물리 자원을 얻어서 가상화 하고, concurrency problem도 처리하고, file을 영구적으로 저장합니다.

그래서 오랜기간동안 안전하게 file을 사용할 수 있게 해줍니다.

여기에 3 pieces인 virtualization, concurrency, persistence가 전부 존재한답니다.

OS의 Design Goal

1. Building Abstraction

System을 편리하고 사용하기 쉽게 만들어야 합니다.

어셈블리어로 코딩하지 않고, C언어같은 고수준 언어로 코딩하듯이.

2. Provide high performance ( minimize the overheads of the OS)

virtualization, 이론상 물리적 주소 공간보다 훨씬 많은 프로그램을 실행할 수 있습니다. 하지만 instruction도 훨씬 많이들고 cost가 들어가는 작업입니다. 이때 드는 비용들을 최소화해야 합니다.

3. Protection

isolation : 프로세스에 고립성이 있어야 합니다. Word로 문서 작성중에 오류가 나서 종료됐다고 컴퓨터가 꺼지면 될까요? 안됩니다.

reliability : OS는 non-stop으로 실행되어야 합니다. 힘들다고 OS가 멈추면 프로그램들은 비정상적으로 행동하게 될 것입니다.

그 외

energy-efficiency, security, mobility 등등..

다음번에는 virtualization 중 process에 대해서 알아보겠습니다.

프로그램이 어떻게 메모리에 올라가고, 어떠한 과정을 거쳐서 여러개를 실행시키는지 등등..

읽는데 드는 시간은 많지만, 내가 왜 컴퓨터공학과를 선택했는지? 를 생각해보면 이 순간이 궁금해서 했기때문에

고통스럽지만 의문점이 해소되어서 마음이 편하기도 합니다.

감사합니다.

728x90
반응형

'컴퓨터 > OS' 카테고리의 다른 글

[운영체제] xv6 설치 및 qemu-nox 시작 내용 바꾸기  (3) 2021.03.08
[OS] 운영체제란 무엇인가?  (0) 2021.03.02