티스토리 뷰

반응형

운영체제(Operating System)는 컴퓨터 시스템에서 핵심적인 역할을 수행하는 소프트웨어이다.

 

운영체제의 구조는 크게 커널(Kernel)셸(shell)로 나눌 수 있다. 운영체제는 커널과 셸 및 여러가지 기능(라이브러리, 시스템 프로그램 등등)이 추가된 상태를 통칭해서 운영체제(OS)라고 부른다. 


커널(Kernel)

커널은 운영체제의 핵심 부분으로, 하드웨어와 응용 프로그램 간의 상호 작용을 관리한다. 주요 기능으로는 프로세스 관리, 메모리 관리, 입출력 관리, 파일 시스템 관리 등이 있다.

 

커널은 시스템의 최상위 권한을 가지고 있어 하드웨어 자원에 직접 접근하고, 응용 프로그램이 원활하게 실행될 수 있도록 관리한다. 

 

만약 응용 프로그램이 파일 생성 및 파일 삭제 등의 기능을 실행하기 위해 직접 하드웨어에 접근이 가능할까?

아니다. 응용 프로그램은 파일 관리 및 자원 접근 같은 주요한 기능의 권한이 없기 때문에 해당 기능을 수행하려면 커널을 호출해야하고, 커널이 하드웨어에 접근해서 해당 기능을 수행한 뒤 결과값을 응용 프로그램에 알려준다.


셸(Shell)

셸은 사용자와 운영체제 간의 인터페이스 역할을 수행한다. 여기서 인터페이스란 사용자가 운영체제에게 정보, 명령, 신호 등을 교환하기 위한 규칙이다. 사용자가 셸을 통해 운영체제에게 명령을 입력하고, 그 결과를 확인할 수 있다.

 

셸은 명령어 해석기(Parser)와 실행기(Executor)로 구성되어 사용자의 명령을 분석하고 실행한다. 셸은 텍스트 기반의 CLI(Command Line Interface)와 그래픽 기반의 GUI(Graphical User Interface) 종류 있다. 

 

사용자는 을 통해 운영체제와 상호작용하고 작업을 수행할 수 있으며, 셸을 통해 커널을 호출해 운영체제 기능과 서비스를 조작할 수 있다.

 

일반적으로 운영체제에는 여러 종류의 셸이 제공되며, 예를 들어 유닉스(Unix)와 리눅스(Linux)에서는 Bash 셸, 윈도우(windows)에서는 Command Prompt, PowerShell이 대표적인 셸이다.


시스템 콜(System Call)

운영체제에서 시스템 콜은 응용 프로그램이 운영체제의 기능을 사용할 수 있도록 하는 인터페이스이다. 시스템 콜은 응용 프로그램이 운영체제의 커널에게 서비스를 요청하거나 하드웨어와 상호작용하기 위해 사용된다.

 

특징 ①

응용 프로그램은 시스템 콜을 사용해 다양한 운영체제 기능에 접근할 수 있다. 예를 들어, 파일 시스템 접근, 네트워크 통신, 메모리 관리, 프로세스 관리 등 하드웨어 자원에 접근해서 작업을 수행할 때 시스템 콜을 호출한다.

 

특징 ②

시스템 콜은 커널이 제공하는 시스템 자원의 사용과 연관된 함수라고 볼 수 있다. 일반적으로 고급 프로그래밍 언어를 사용할 때 제공하는 라이브러리 함수를 통해 호출되기 때문이다. 라이브러리 함수는 사용자 모드에서 실행되며, 해당 기능을 수행하기 위해 운영체제의 커널 모드로 전환된다. 커널 모드에서는 권한과 권한 체크를 통해 안전하게 시스템 자원(Resource)에 접근하고 관리할 수 있다.

 

특징 ③

시스템 콜은 운영체제의 핵심적인 기능에 접근하는 역할을 하므로, 보안과 안정성이 매우 중요하다. 운영체제의 자원과 기능은 시스템 콜을 통해서만 제공한다. 운영체제는 시스템 콜을 통해 들어오는 요청을 검증하고, 필요한 자원을 할당하고, 작업을 처리한 후 결과를 반환한다. 여기서 응용 프로그램은 운영체제의 다양한 기능을 안전하고 일관된 방식으로 사용할 수 있어 컴퓨터 자원을 보호할 수 있다.

 

특징 ④

일반적으로 운영체제는 다양한 시스템 콜을 제공한다. 각 시스템 콜은 고유한 번호 또는 식별자로 식별되며, 응용 프로그램은 이를 사용하여 원하는 기능을 호출한다. 언어별로 시스템 콜을 호출하는 방법이 다를 수 있으며, 대부분의 프로그래밍 언어에서는 시스템 콜을 추상화하여 사용하기 쉽게 라이브러리 함수 형태로 제공한다. 

 

시스템 콜은 라이브러리(Library) 기능을 이용해서 패키지(Pakage)형태로 제공한다. 제공하는 라이브러리나 패키지를 통칭해서 API(Application Programming Interface)라고 부른다. API 내부에는 필요시 해당 운영체제의 시스템 콜을 호출하는 형태로 만들어진다.

 

예를 들어, java 언어를 사용하려면 JDK(Java Development Kit)를 설치해야 한다. JDK는 운영체제별로 제공된다(각 운영체제 별로 시스템 콜을 호출하는 방법이 다르기 때문). java로 된 프로그램을 실행하면 JDK가 해당 운영체제에서 제공하고 있는 각종 실행 함수를 자동으로 호출해준다. JDK에는 시스템 콜 호출 기능이 들어있는 것이다. 이처럼 java 외의 각각의 언어 라이브러리는 각 운영체제별로 시스템 콜을 호출하는 기능을 제공한다. 

반응형
댓글
공지사항