본문 바로가기

[Kotlin&Spring] 5기 내일배움캠프

[Kotlin&Spring] 5기 운영체제의 개념을 알아보자

 

운영체제(OS, Operating System)란,

컴퓨터 이용자의 하드웨어와 시스템 리소스를 제어하고, 프로그램에 대해 일반적인 서비스를 지원하는 시스템 소프트웨어 이다

컴퓨터의 각종 하드웨어 자원과 소프트웨어 자원을 효율적으로 운영관리함으로써 사용자가 시스템을 이용하는데 편리함을 제공하는 소프트웨어이다

모든 하드웨어와 소프트웨어를 관리하는 실행 관리자이다

 

 

운영체제의 구조

1, 커널(Kernel)

프로세스 관리, 메모리 저장장치 관리 등 컴퓨터에 속한 모든 자원를 관리한다

핵심적인 기능을 한다

2. 인터페이스(Interface)

사용자의 명령을 컴퓨터에 전달하고 결과를 사용자에게 알려주는 역할(소통)을 한다

GUI(Graphic User Interface)CLI(Command Line Interface)가 있다

3. 시스템 콜(System Call)

사용자나 프로그램이 직접적으로 컴퓨터 자원에 접근하는 것을 막고 커널을 보호하기 위해 만든 코드 집합이다

커널이 자신을 보호하기 위해 만든 인터페이스이다

사용자 프로그램과 Operating System 간의 Programming interface 역할을 한다

시스템 콜 함수를 통해서만 커널에 접근할 수 있다(Kernel Mode)

커널은 자원에 대한 직접 접근을 차단하기 때문에 자원을 이용하기 위한 시스템 호출이 필요함

ex)응용프로그램 하드디스크에 데이터 저장하려고 함 -> 커널을 통해 데이터 저장을 요청한다

4. 드라이버(Driver)

하드웨어 장치와 운영체제 간의 통신을 가능하게 하는 소프트웨어이다

커널 내부의 드라이버는 간단한 입출력 정도의 입력만 제작하고 개별 하드웨어 특성을 반영한 소프트웨어(디바이스 드라이버)는 추가적인 드라이버와 함께 실행되도록 한다

인터페이스는 반드시 시스템 호출을 통해 커널에 접근할 수 있고, 드라이버는 디바이스 드라이버와 함께 동작한다

 

운영체제의 역할은 시스템 관리(System Management)이다

운영체제는 데이터 관리, 데이터 및 자원의 공유기능을 제공한다

시스템의 각종 하드웨어와 네트워크를 관리 및 제어한다

시스템의 오류를 검사 및 복구한다

자원 보호 기능을  제공한다

 

- 파일 관리(File Management): 파일 시스템을 관리

- 입출력 관리(I/O Management): 컴퓨터에 연결된 I/O 장치에서 들어오는 신호 관리, 입출력 보조기능 제공

- 프로세스 관리(process Management): 프로세스의 실행 순서와 실행 방법 제어

*프로세스는 운영체제에서 프로그램을 실행하는 작업 단위를 말한다

프로그램 데이터를 로드하여 RAM 과 같은 주기억장치에 저장하고 사용할 수 있도록 한 상테

- 주기억장치 관리(Main memory Management)

운영체제가 자동적으로 RAM의 일정 부분을 할당하거나 RAM 내에 있는 프로그램들의 경계를 설정해 서로 침범하지 못하게 하여 관리한다

주기억장치(RAM)는 보조기억 장치에서 데이터를 가져와 빠르게 CPU에 전달이 가능한 RAM에 미리 올려 관리한다

- 인터페이스 제공: 사용자와 시스템 간의 편리한 인터페이스 제공

ex) (Shell)

 

운영체제의 목적

1. 처리능력(Throughput): 시스템의 생산성을 나타내는 단위로, 일정 시간 동안 처리하는 일의 양

2. 응답(반환)시간(Turn Around Time): 작업 의뢰 후 시스템에서 결과가 얻어질 때까지의 시간

3. 신뢰도(Reliablity): 주어진 문제를 얼마나 정확하게 처리하는가

4. 사용가능도(Availability): 시스템을 얼마나 빠르게 사용할 수 있는가에 대한 정도

 

커널의 역할

1. 프로세스 관리: 프로세스들의 CPU의 시간 자원을 배분하고 작업에 필요한 환경을 제공한다

여러 개의 프로세스가 동시에 동작하는 것처럼 보이게 한다

2. 메모리 관리: 각 프로그램이 어디에서, 무엇을, 얼마나 사용하는지 추적, 메모리 자원을 할당하며 가상메모리 사용할 수 있도록 한다

프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다

3. 파일 시스템 관리: 시스템 콜을 제공해 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다

4. 디바이스 관리: 필요한 입력과 출력 서비스를 드라이버를 통해 제공한다

 

 

커널의 종류

1. 단일형 구조 커널(Monolithic Architecture)

초창기 운영체제 구조, 기능들이 단일 모듈로 이루어져 커널 전체를 다시 컴파일, 로딩이 필요했다.

사용자가 운영체제 서비스들을 System Call을 통해 사용할 수 있게 함

장점)

1. 커널 너부에서 서비스들이 시스템 자원 공유하며 효율적으로 관리할 수 있음

2. 내부 서비스를 커널이 수행하여 빠른 처리 속도를 이끌어낸다

최신 모놀리식 커널은 여러개의 모듈로 구성돼 커널의 추가, 수정이 수훨해졌다

단점) 커널이 많은 것을 관리하기 때문에 커널의 크기가 크고, 하나의 오류가 전체 시스템이 영향을 끼칠 수 있다

ex) Unix, Embedded Linux, OSEK, WinMobile

 

2. 마이크로 커널(Microkernel)

하드웨어를 관리하고 운영체제의 다른 부분과 통신하기 위한 핵심 서비스(Process Management, Memory Management, Network Management)만 포함한 작은 커널이다

프로세스 간 통신을 통해 대부분의 서비스가 수행된다

메시지 전송에 따른 컨텍스트 스위칭이 많이 발생한다

*Context Switching: 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트(Interrupt) 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(context)를 교체하는 작업

장점)

1. 서버를 추가하는 방식이기 때문에 커널 변경없이 간단히 기능을 추가 수정할 수 있다

2. 프로세스가 각각의 서버 영역에서 수행된다

하나의 서비스가 다운되어도 다른 서비스에까지 영향을 끼치지 않는다

임베디드 시스템 등에 사용된다

3. 하이브리드 커널(Hybrid Kernel)

모놀리식 커널과 마이크로 커널의 조합이다

안드로이드 운영체제 등에 사용된다

4. 실시간 커널(Real-time Kernel)

이벤트에 대한 빠르고 예측 가능한 응답이 필요한 실시간 어플리케이션을 지원하도록 설계되었다

단점) 시스템 복잡도가 증가될수록 시스템 부하, 오버헤드가 증가한다

항공기 및 산업 제어 시스템에 사용된다

 

(Shell)은 사용자가 볼 수 없는 곳인 커널 공간(Kernel Space)에 있는 커널로, 운영체제에 접근하기 위해 사용하는 명령어 해석기이다

쉘은 사용자와 Operating system 간의 인터페이스를 제공한다

쉘의 기능은 아래와 같다

1. 명령어 해석 기능

사용자가 입력한 명령어를 기계어로 번역하고 커널에서 수행한 결과를 번역해 사용자에게 전달(Interpreter)한다

2. 프로그래밍 기능

쉘 스크립트(Shell Script)를 작성하여 반복적으로 수행하는 작업을 프로그램으로 만들 수 있다

3. 사용자 환경 설정 기능

명령을 호출하는 경로, 파일의 권한 설정, 환경 변수들을 초기화 파일에 저장하고 사용자가 로그인 할때마다 설정이 반영된다

 

쉘의 종류

1. CLI(Command Line Interface)

사용자가 텍스트 명령을 입력하여 컴퓨터와 상호작용하는 방식이다

사용법을 익히기 어렵지만 숙달되면 효율적이다

ex) Window: cmd, Linux/Mac Os: Terminal

2. GUI(Graphic User Interface)

사용자가 아이콘, 버튼, 창 등을 사용하여 컴퓨터와 상호작용하는 방식이다

마우스와 터치스크린을 활용하여 조작할 수 있다

ex) Window, Mac Os: 데스크톱 환경

 

운영체제를 통해 컴퓨터 자원을 효율적으로 관리하고 사용자가 보다 쉽게 컴퓨터를 사용할 수 있는 것 같다

매일매일 조금씩 노력해서 발전하는 내가 되자 ~ 화이팅!