본문 바로가기
책/혼공 컴퓨터구조+운영체제

운영체제 - 운영체제의 큰 그림(커널,이중모드(사용자모드,커널모드),시스템호출)

by 코딩하는 돼징 2023. 12. 7.
반응형

운영체제의 심장, 커널

운영체제의 핵심 부분으로 자원에 접근하고 조작하며 프로그램이 안전하게 실행되도록 하는 핵심 기능을 제공한다. 여기에는 메모리 관리, 프로세스 스케줄링, 입출력 관리, 보안 등이 포함된다. 운영체제가 설치된 모든 기기에는 커널이 있다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 


인터페이스가 뭐에요?

두 개 이상의 시스템, 장치, 소프트웨어 등이 상호 작용하기 위한 경계나 접점을 의미한다. 이는 서로 다른 두 요소간에 상호 작용이 가능하도록 만들어진 접속 부분 또는 연결고리를 나타낸다.

 

운영체제에는 속하는데 커널에는 속하지 않는 기능

사용자 인터페이스(UI,User Interface)는 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로일뿐 운영체제의 핵심 기능(커널은)아니다. 사용자 인터페이스의 종류에는 그래픽 유저 인터페이스와 커맨드 라인 인터페이스가 있다.

01 그래픽 유저 인터페이스(GUI, Graphical User Interface)

마우스,키보드,터치 등을 사용하여 그래픽 요소들을 통해 컴퓨터와 사용자가 상호작용한다. 안드로이드 스마트폰속 다양한 앱을 터치하여 실행할 수 있는 것은 안드로이드 운영체제가 그래픽 유저 인터페이스를 지원하기 때문이다. 그러므로 사용자는 아이콘을 클릭하거나 화면을 터치하여 프로그램을 실행하고 작업 할 수 있다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


02 커맨드 라인 인터페이스(CLI, Command Line Interface)

명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스이다. 이는 명령어를 기반으로 컴퓨터와 상호작용하는 인터페이스이기 때문에 아이콘이나 다채로운 그래픽 화면이 없다. 사용자는 컴퓨터를 사용하기 위해 정해진 명령어를 입력함으로써 컴퓨터와 상호작용할 수 있다. 리눅스나 유닉스 운영체제에서 흔히 사용되는 형태이다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


운영체제의 기본역할과 원리

01 자원 보호

운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호한다. 이는 응용 프로그램이 CPU,메모리,하드디스크 등에 자유롭게 접근하여 조작하는 것을 방지하고 자원의 무질서한 관리를 막는다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


02 자원 접근 대행

응용 프로그램이 자원에 접근하려고 할 때 운영체제를 통해서만 접근할 수 있도록 한다. 즉 운영체제는 응용프로그램의 자원 접근을 대행하는 역할을 수행한다. 이는 일종의 "문지기"역할이다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


03 하드 디스크 예시

응용 프로그램이 하드 디스크에 데이터를 저장하려면 운영체제에 도움을 요청하고 운영체제는 해당 작업을 대신 수행한다.

 

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


이중 모드

CPU가 명령어를 실행하는 모드를 크게 사용자모드와 커널 모드로 구분한다.


사용자 모드

01 운영체제 서비스 제한

운영체제의 서비스를 제한적으로 받을 수 있는 실행모드이다. 일반적인 응용 프로그램은 사용자 모드에서 실행된다.

02 커널 영역의 코드 실행 불가

사용자 모드에서는 커널 영역의 코드를 직접 실행할 수 없다. 이는 운영체제의 핵심 부분이 위치한 커널 영역에 있는 코드를 일반 응용프로그램이 실행하지 못하도록 하는 보안 조치이다.

03 자원 접근 제한

사용자 모드에서 실행중인 CPU는 일부 특권 명령어(예: 입출력 명령어)와 같이 하드웨어 자원에 직접 접근하는 명령어를 실행할 수 없다.


커널 모드

01 운영체제 서비스 제공 기능

커널 모드는 운영체제의 서비스를 제공받을 수 있는 실행모드이다. 운영체제의 핵심 부분인 커널 영역의 코드를 실행할 수 있다.

02 자원에 대한 접근 권한

CPU가 커널 모드에서 명령어를 실행하면 자원에 접근하는 명령어를 포함한 모든 명령어를 실행할 수 있다. 이는 운영체제가 시스템 자원을 효율적으로 관리하고 제어하기 위해서 필요하다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


시스템 호출(system call)

커널 모드로 전환하여 실행하기 위해 호출

일종의 인터럽트이다. 정확히는 소프트웨어적인 인터럽트이다. 인터럽트는 입출력 장치에 의해 발생하기도 하지만 인터럽트를 발생시키는 특정 명령어에 의해 발생하기도 하는데 이를 소프트웨어 인터럽트라고 한다.

시스템 호출을 발생시키는 명령어가 실행되면 다음과 같은 과정이 일어난다.

01 커널 모드로 전환

응용 프로그램에서 시스템 호출을 실행하려면 CPU는 현재 실행 중인 사용자 모드에서 커널모드로 전환된다.

02 백업

CPU는 현재 응용 프로그램이 실행하던 상태(레지스터 값 등)를 백업한다. 이 정보는 나중에 시스템 호출이 완료된 후에 다시 복원된다.

03 커널 영역 내의 코드 실행

커널 모드로 전환된 CPU는 운영체제의 커널 영역에 있는 시스템 호출을 처리하는 코드 즉 인터럽트 서비스루틴(Interrupt Service Routine,ISR)을 실행한다.

04 요청된 서비스 수행

시스템 호출은 특정 운영체제 서비스를 요청하는 것이므로 커널 모드에서 실행중인 코드는 해당 서비스를 수행한다. 이는 파일 입출력, 메모리 할당, 프로세스 관리 등과 같은 다양한 운영체제 서비스를 포함할 수 있다.

05 복원 및 복귀

시스템 호출이 완료되면 CPU는 백업한 상태를 복원하고 다시 사용자 모드로 전환하여 원래 응용 프로그램의 실행을 계속한다.


시스템 호출 원리

1) 하드 디스크에 데이터를 저장하는 시스템 호출을 발생시켜 커널 모드로 전환

2) 운영체제 내의 하드디스크에 데이터를 저장하는 코드를 실행함으로써 하드 디스크에 접근

3) 하드 디스크에 접근이 끝났으면 다시 사용자 모드로 복귀하여 실행

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용한다. 그 과정에서 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행된다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


시스템 호출은 운영체제 마다 정해져있다.

아래 사진은 리눅스의 시스템 호출이다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 


운영체제의 핵심 서비스

01 프로세스 관리

프로세스 정의 : 프로세슨느 실행 중인 프로그램으로 CPU에서 실행 되는 단위를 나타낸다.

다중 프로세스 관리 : CPU는 보통 한 번에 하나의 프로세스만 실행할 수 있다. 따라서 여러 프로세스가 번갈아가며 실행되도록 관리해야 한다.

프로세스 상태 관리 : 각 프로세스는 실행 중, 대기 중, 준비 중 등의 상태를 가진다. 운영체제는 이러한 상태를 관리하여 프로세스를 효율적으로 실행하고 관리한다.

02 자원 접근 및 할당

CPU 스케줄링 : 여러 프로세스 중에서 어떤 프로세스에 CPU를 할당할지 결정하는 것을 CPU스케줄링이라고 한다. 이는 시스템의 성능과 응답시간에 영향을 미친다.

메모리 관리 : 새로운 프로세스가 시작될 때 해당 프로세스를 어느 주소로 메모리에 할당할지 결정해야 한다. 또한 메모리의 효율적인 사용을 위해 메모리 관리가 필요하다.

입출력 장치 관리 : 프로세스가 입출력을 요청할 때 이를 효율적으로 처리하기 위해 인터럽트 서비스 루틴을 통해 입출력 작업을 수행한다.

03 파일 시스템 관리

파일 정의 : 관련된 정보를 파일이라는 단위로 저장 장치에 보관한다. 파일은 데이터 또는 프로그램을 저장하는데 사용된다.

디렉터리 관리 : 파일들을 묶어 폴더(디렉터리)단위로 저장 장치에 보관한다. 디렉터리는 파일을 조직화하교 효과적으로 찾을 수 있게 한다.

파일 보안 및 권한 관리 : 파일 시스템은 파일에 대한 접근 권한을 관리하여 불법적인 접근을 방지하고 데이터의 안전성을 보장한다.

 

 

 

참고 :  본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

 

 

 

 

반응형

댓글