패스트캠퍼스

운영체제 - 마무리 정리

돌맹이시터 2021. 1. 11. 18:28

패스트캠퍼스 컴공전공 운영체제 마지막 강의 정리,

운영체제 마무리와 안드로이드 내부구조, IoT를 다루며 마무리지었다.

 

 

 

실제 운영체제의 이해

 

 

 

- 리눅스 운영체제

 

 

 

 

패스트캠퍼스 강의자료

 

위의 사진은 강의자료의 일부인데,

리눅스 운영체제를 

하드웨어 - cpu, ram, 저장매체, IO device, network 등으로 이루어져 있고,

리눅스 커널 - 핵심적인 5개의 component들로 구성되어 있으며 

각각이 어떤 기능을 하는지, 하드웨어의 어떤 장치와 연관되어있는지 전반적으로 살펴볼 수 있다.

Applications, Tools - 쉘이 사용자에게 인터페이스를 제공하여 응용프로그램을 실행시키거나 os와의 커뮤니케이션 등의 역할을 제공한다.

 

자료에 나와있지는 않지만,

File system, Device driver 관련된 것들을 한데 묶어서 가상 파일 시스템을 통해 다룬다고 한다.

네트워크 관련 부분들은 따로 다루지 않았다.

 

 

그 외 자세한 내용들은 아래에서 살펴볼 예정.

 

 

 

 

* shell

 

 

shell : 사용자와 컴퓨터 하드웨어 또는 os간 인터페이스

•사용자의 명령을 해석하여 커널에 요청하는 역할

•관련 systemcall을 사용해서 프로그램이 작성되어 있다.

 

shell 종류

•Bourne-Again Shell (bash) : GNU 프로젝트의 일환으로 개발됨, 리눅스의 디폴트

•Bourne Shell (sh)

•C Shell (csh)

•Korn Shell (ksh) : 유닉스에서 가장 많이 사용

 

 

 

 

 

* process management (Linux kernal의 component의 하나)

 

 

응용프로그램을 여러 개의 process로 관리 (multi-processing)

process scheduler

•process 실행/종료 관리

•인터럽트 처리 관리

 

 

 

* memory management (Linux kernal의 component의 하나)

 

 

 가상 메모리 

•page를 기반으로 메모리 관리 (paging system)

 

 

 

* IO device management

 

 

VFS(Virtual File System, 가상파일시스템) 을 사용해서 유사한 인터페이스로 지원된다.

file, Device driver, Network 관리

 

 

 

 

 

 

 

- 시스템 프로그램

 

 

핵심은 shell

•bash (Bourne-again shell)

•내부는 systemcall을 호출하도록 구현

•각각의 systemcall 어떻게 동작하는지 제어

 

 

각 프로그래밍 언어

•필요할 때 해당 운영체제의 시스템콜 호출 - 각 운영체제마다 별도로 구현되어야 함

 

운영체제에서 시스템콜이 제공되는 점을 감안하여,

 

특정 언어에서 라이브러리에 있는 함수들을 내부적으로 해당 시스템콜을 호출하도록 구현한다.

 

예를 들어, 파이썬에서 파일을 여는 기능을 만들고자 한다면

파이썬의 어떤 라이브러리에

 

open_file() {

}

 

위와 같은 함수를 작성하고,

{ } 의 내부에 실제 운영체제에서 쓰는 시스템콜(open)을 사용할 수 있도록 작성한다.

이렇게 파일처리 관련 라이브러리를 만들면,

프로그래머들이 파이썬으로 파일을 여는 기능을 사용할 수 있게 되는 것이다.

 

 

-> 각 프로그래밍 언어의 라이브러리/시스템콜과의 관계를 다시 한 번 정리한 것

 

 

 

 

 

 

 

- 안드로이드 스마트폰 (Android) 내부 구조

 

 

 

 

안드로이드 스마트폰의 구조를 살펴보면 기본적으로 리눅스 커널이 깔려있기 때문에,

따로 연결해서 리눅스 pc로 사용할 수도 있고, 쉘만 터미널로 연결해서 리눅스 명령을 내릴 수도 있다.

 

라이브러리는 c언어로 작성되어 있고,

 

 

1,2,3 부분은 안드로이드에 특화된 부분이며

특히 2,3을 합하여 안드로이드라고 봐도 무방하다.

 

3. 안드로이드 런타임

안드로이드는 자바를 사용하고 있기 때문에 JAVA VM이 필요

(JAVA와 코드는 동일하지만 byte코드를 운영체제에 맞게 변환시켜 실행시켜주는 역할)

 

2. 응용프로그램 프레임워크 (==플랫폼)

안드로이드의 화면을 구성하는 여러가지 함수들을 구현하여 특별한 실행 환경을 제공하게 된다.

 

1. 응용프로그램

위의 프레임워크에서 제공하는 함수들을 가지고 프로그램을 만든 것을 스마트폰의 App이다.

 

 

-> 안드로이드 스마트폰의 os는 안드로이드가 아니라 리눅스이며,

리눅스os + 안드로이드 플랫폼을 갖춘 스마트폰이 안드로이드 스마트폰이다.

 

 

 

 

 

- IoT (Internet of Things, 사물 인터넷)

 

 

각종 사물에 센서, 통신기능을 내장해 인터넷에 연결하는 기술

 

 

ex) 

외출 시 보일러 조작, 가정용cctv, 스마트 온도계 등