반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

운영체제의 개요(2) 본문

학교/운영체제

운영체제의 개요(2)

5_hyun 2021. 9. 12. 00:39

-운영체제 발전과정

(기술들의 순서 정도는 알아둘것)

-운영체제의 역사

batch, distrubuted systems 언제 사용되는지 알 것

기술이 발전하면서 PC의 크기가 줄어듬, 성능은 좋아짐

현재는 유닉스, 윈도우, 리눅스가 크게 사용

 

-운영체제의 세부기능

시스템 호출: 커널을 이용할 때 지키는 규격 

커널: 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차에 비유하면 엔진에 해당한다.

커널에서 제공하는 기능은 자원관리 기능, 기타 기능

자원관리 기능(기본, 필수): Memory, Process, I/O Device, File, CPU Managgement

기타 기능(부가): Security, Networking & Distributed Managgement, Command Interpreter(=Shell, 명령을 통해 운영체제에 접근해 사용할 수 있음)

 

-운영체제의 기능

 

1. 메모리 관리 기능

어떤 프로그램을 실행하면 메모리에 프로세스가 로딩됨

  • Main Memory 

Usage Monitoring(사용량 관리)

Address Mapping(메모리 주소 관리)  

Allocation & Free(여분 관리도 해줘야 함)

  • Secondary Memory

Memory <- Program & Data -> Disk(디스크와 메모리를 저장했다 빼는 기능도 해야 함)

Disk Scheduling & Allocation

 

2. 프로세스 관리 기능

Program: 하드디스크에 저장된 것, 모든 프로그램은 실행되려면 메모리에 올라가 있어야 한다. CPU는 메모리에서 가져와서 실행하기 때문

Process: 하드디스크에서 메모리에 올라와있는 프로그램이 프로세스

  • 운영체제가 수행할 프로세스 관리사항

프로세스의 생성, 제거, 중지, 재수행을 운영체제가 해결해줘야 한다.

프로세스 동기화 기법(프로세스의 순서를 맞춤), 상호 통신(프로세스끼리 협업)

교착상태(Deadlock) 방지를 위한 기능, 교착상태: 여러 프로세스끼리 어떤 자원을 서로 경쟁적으로 사용해야 하는 경우 자원은 유한하기 때문에 서로 충돌이 일어나는 것, 성능이 떨어짐

 

3. 입출력 장치 관리 기능

사용자가 I/O 장치의 하트웨어 특성을 알지 못해도 자유롭게 활용할 수 있어야 함(편의성)

프로세서와 I/O 장치 간의 처리속도 차이 해결(버퍼링)

새로운 하드웨어가 나와도 연결만 시켜주면 해결이 되어야 함(확장성)

따라서 Device Driver(장치 구동기 또는 장치 관리자)가 존재, 장치 의존 부분까지만 새로운 장치에 영향을 받을 수 있음

 

4. 파일 관리 기능

CD, DVD 같은 다양한 저장장치를 동일한 방식으로 사용할 수 있는 기능 제공

파일의 생성 및 제거, 디렉터리(폴더)의 생성 및 제거

운영체제마다 파일 시스템을 달리 구현: FAT, FAT32(옛날 윈도우), NTFS(요즘 윈도우), ext2, ext3(리눅스), nfs(유닉스)

 

-운영체제 서비스(중요)

 

1. 시스템 호출(System Call) 서비스

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

(멀티프로그래밍 환경에서 응용프로그램이 작동하면서 공유자원들을 사용하면서 다른 응용프로그램의 영역을 침범/침해하는 것을 막기 위해 커널 모드 도입)

여러 개의 프로세스들이 자원을 사용하려고 경쟁한다.

직접 접근: 14번 App이 10을 저장하려고 하는데 21번 App는 34를 저장하려 하면 10이 지워지고 34가 저장된다. 10번 App입장에서는 10이 저장된 것으로 안다.

시스템 호출을 통한 접근: App이 직접 접근 못하고 시스템 호출을 통해 접근해야 하는 것으로 문제점 보안

 

시스템 호출 과정

1: 사용자 모드에서 커널 모드로 전환되면서 커널한테 read함수로 요청

2: 함수 목록 중에서 read 함수를 찾음

3: read 함수에서 요청한 변수의 위치를 찾음

4: 메모리에다가 변수에서 요청한 내용을 저장

5: 리턴해 줌, 사용자 모드로 전환

 

2. 부팅 서비스

전원을 켜면 -> CPU에서 ROM(전원이 나가도 안 지워지는 메모리, 부트스트랩 로더 존재) 주소 생성 -> 주소 값으로 컨트롤이 넘어감 -> 부트스트랩 로더는 하트웨어 체크,  정상이면 부팅 시작 -> 디스크에 운영체제가 저장되어 있음 -> 부트스트랩 로더가 운영체제를 읽어서 RAM(전원 끄면 메모리 지워짐)에 로딩 -> 로딩 시작 주소에 컨트롤을 넘김 -> 부팅 

 

부트스트랩 로더: 제조사가 처음부터 넣어 둔 지워지지 않는 프로그램

Booting: 운영체제가 메모리로 로딩(적재)되는 과정

 

-운영체제 구조

 

Windows 10 구조

점선을 기준으로 위쪽은 사용자 모드, 아래쪽은 커널 모드

맨 밑에 하드웨어, 맨 위에 사용자

가운데에 커널과 여러 가지 관리 기능이 존재, 계층적인 구조

 

-리눅스 구조

밑에 하드웨어, 위에 사용자

커널은 시스템 콜 인터페이스를 통한 구조, 계층

커널을 기준으로 유저 모드, 커널 모드로 나눈다.

 

-안드로이드 구조

안드로이드 안에 리눅스가 들어있다.

스마트폰 최적화를 위해 라이브러리 Bionic, HAL 등을 추가 

 

계층적인 구조

mac 커널 내부는 유닉스, 오른쪽은 시스템 콜 인터페이스

 

어떤 운영체제든 계층적인 구조를 갖는다.

 

사용자 커널 하드웨어 구조로 이루어짐

 

-계층적 구조

계층 구조면 상단, 하단이 서로 영향을 최소화할 수 있다. 새로운 하드웨어가 추가되었을 때 영향을 끼치는 범위를 최소화하기 위해서 층마다 독립성을 확보해 준다. 하지만 계층이 많을수록 성능이 저하된다. 따라서 적절하게 계층을 나눠야 한다.

모듈화(모듈 구조): 유사한 기능끼리 묶어서 하나의 단위로 사용할 수 있게 한다. 다른 부분에 영향을 최소화할 수 있어  검증과 오류 수정이 용이하다.

 

-커널 구조에 따른 분류

커널: 메모리에 상주하는 운영체제의 핵심모듈(부분)

 

API=System call

단일 커널: 모든 기능들이 커널 안에 구현되어있음

마이크로 커널: 프로세스, 메모리 관리만 커널에 있고 나머지 기능들은 사용자 모드에 있다. 

 

-마이크로 커널의 장점

1. 어떤 하드웨어 드라이버가 에러가 생기면 단일 커널(헤비 하다)은 전체가 에러가 난다. 하지만 마이크로 커널(라이트 하다)은 꼭 필요한 부분만 커널 부분에 남겨두고 나머지는 사용자 모드에 올려서 하드웨어에 문제가 생기더라도 운영체제 커널에는 영향을 주지 않는다.

2. 서버의 개발이 용이하고 운영체제 기능 변경이 쉽다. 파일 시스템을 다른 걸 사용할 수 있고 하나의 기능만 업그레이드 가능하다.

3. 실시간 시스템에 활용(커널 내부에 발생 지연이 작고 예측 가능)

 

- 단점

1. 속도가 느려질 수 있다. 단일 커널은 이웃하게 붙어있어서 수행 시간이 더 빠르다.(성능이 떨어질 수도 있다.)

2. 프로세스 간 통신 발생을 최소화하여야 한다.

 

728x90
반응형
Comments