본문 바로가기
컴퓨터/OS

[OS] 운영체제란 무엇인가?

by IT황구 2021. 3. 2.
728x90
반응형

이번학기는 운영체제를 듣는다.

1강이라 Introduction 이다.

본격적으로 배우기 전에 여러 내용을 얕게 본다.

운영체제란 무엇인가?

운영체제의 official 한 definition은 없다.

알기 쉽게 설명하기 위해서는 user와 computer 사이의 interface 역할을 해주는 것이라고 생각하면 된다.

아래 사진을 보자.

ref : https://en.wikipedia.org/wiki/Operating_system

hardware와 application 간의 interface 역할을 해준다고 보면 된다. HOW?

순서가 어떻게 되는지 알아보자.

User 는 Application(Word, PPT, LOL ..) 을 사용한다.

우리가 Application을 켜면 이 app이 cpu한테 켜라고 명령을 할까? 아니다. 그럴 수 없다.

Application은 직접적으로 H/W에 접근할 수 없다.

따라서 OS를 이용해서 접근을 해야한다.

1. APP은 System Call이라는 function을 이용해서 OS에게 이 프로그램을 켜달라고 요청한다.

2. OS는 H/W내부를 볼 수는 없지만 Architecture를 볼 수 있다.

여기서 Architecture은 (MIPS,ARM ....) 등을 말한다.

3. OS는 Architecture Interface를 이용해서 H/W 의 내부를 조종한다.

ADD,LW 등등 메모리에 갖다놓고 저장하고 더하고 여러 명령어를 통해서 조종할 수 있다.

왜 OS는 H/W에 직접 명령을 할 수 없을까?

왜 Architecture를 이용해야 하는지 잘 모르겠다.

이유는 H/W는 굉장히 복잡하기 때문이다.

예시를 보자.

ex) File 작업을 하는 program을 만든다고 생각해보자.

내 APP은 직접적으로 SSD/HDD 에 저장하고 읽어야 한다.

그렇다면 APP은 SSD/HDD 를 Control 하는 방법을 알아야한다.

SSD/HDD 는 제조사마다 종류, 방식이 다 다르다. 즉 Command 도 다르다.

이러한것들을 단순화 하기위해 OS가 존재한다. OS 는 APP과 복잡한 H/W 사이의 translator 역할을 한다.

따라서 이렇게 요약이 가능하다.

OS는 H/W에서 application을 위한 유용한 형식으로 변환 해주는 소프트웨어이다.

 

Software Stack

Software 부분을 직접 따라 만든것이다.

1. Application (게임,ppt,word 등등 프로그램)

2. Middleware( library나 다른 software를 말한다. app에서 온 multimedia file들을 decoding 해서 디코딩 된 img를 display 해준다), daemon process 등..(background process)

3. SDE : python interpreter나 C library 등등..

4. OS : abstracted H/W라고 보면 된다. Kernel을 가리킨다.

5. H/W와 통신하기 위한 interface 다.

프로그램이 돌아갈때 어떤 일이 일어나는가?
-> OS가 메모리에 Instruction을 가져다 놓는다.

일단 프로그램이 어떻게 실행되는지 알아보자

Loop :

1. fetch : processor(CPU)가 메모리로부터 instruction을 fectch 한다.

2. decode : fetch한 명령을 어떤 명령인지 해석한다.

3. Execute : ADD, LW, JUMP .. 어떤 명령인지 해석한걸 실행한다.

4. Processor은 다음 명령으로 가고 계속 위의 내용이 반복된다.

그럼 여기서 원론적인 물음이 생긴다.

누가 메모리로 instruction을 가져갔는데?? -> OS

프로그램이 강제 종료같이 abnormal한 상황에서 누가 프로그램을 지워주는지? -> OS

여러 프로그램이 동시에 돌아가면 어떻게 실행되는지?
->OS가 중요한 역할을 해준다.

 

1. 2개의 Program이 1개의 single main memory를 같이 쓰는 경우.

메인 메모리는 일련의 바이트 집합이다. array of bytes 라고 보면 된다.

분명 single인데 2개를 어떻게 활용할 것인가?

이런식으로 A의 Region과 B의 region 을 따로 나눠서 접근한다.

그러면 실수로 A가 B의 영역에 접근하면?

A의 boundary는 어딘지? 이러한 해결은 누가 해주나?

이 또한 OS가 해결해준다.

2. Physical CPU의 개수보다 Program의 수가 많을 경우?

우리는 6코어인데 인터넷을 10개를 켜도 잘 돌아간다. 어떻게 이게 가능한 일인가?

만약 Core는 2개인데 Program이 4개라고 해보자.

프로그램 별로 어떤 코어를 사용할지 할당을 해주는것도 OS가 한다.

마우스와 키보드는 하나인데, 여러개의 프로그램에서 모두 다 잘 호환이 된다. 이건 누가 해주는걸까? 이 또한 OS가 해준다.

3. 악성 프로그램이 웹 브라우저의 data를 훔쳐가려는 경우 누가 지켜주나?

바로 OS가 이 악성프로그램으로부터 정보를 지켜준다.

 

OS의 역할

1. Program이 돌아가기 쉽게 만들어준다

2. program들이 memory를 공유할 수 있게 만들어준다

-> OS가 없었다면? CPU 1개당 1개만 실행이 가능하게 한다.

3. 여러 프로그램들이 device 들과 interact 할 수 있게 만들어 준다.(마우스,키보드,HDD,network 등..)

OS는 System 작업들을 정확하고 효율적으로 하게 만들어준다.

OS의 role을 좀 더 전공과 관련있게 써본다면

1. Virtualization

-> 각 application마다 내가 cpu 나 memory 같은것들을 독점하고 있다고 생각하게 하는것이다. hallucination 같은것이다.

이해가 가는지..

1개의 물리코어지만 이걸 일부분씩만 할당해서 마치 app들은 자기가 진짜 core로 착각하게 만든다.

2. Concurrency

concurrency를 올바르게 해결하는 역할을 해준다.

-> Thread, synchronization

쓰레드는 다음 포스팅때 예시로 볼 수 있다.

concurrency를 제대로 잡지 않으면 멀티쓰레딩 시에 loop가 제대로 돌 지 않는 등 오류가 많이 난다.

3. Persistence (지속성)

예상치 않은 오류에도 correctness가 보존되고, 정보에 영구적으로 접근할 수 있어야 한다.

ex) Storage, File systems.

============END==========

다음번엔

위의 role 3가지에 대해서 간략하게 알아보고 넘어가도록 해야겠다.

intro라서 맛만 보고, 이제 다음 수업들에서 계속 들으면서 이어서 포스팅 해야겠다.

 

728x90
반응형

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

[OS] Three Easy Pieces - Intro  (0) 2021.08.19
[운영체제] xv6 설치 및 qemu-nox 시작 내용 바꾸기  (3) 2021.03.08