본문 바로가기
CS(Computer Science)

[CS] 운영체제(커널, 쉘) 이해

by 개발지망생 2023. 2. 19.

📖 운영체제 개념 이해

✅ 운영체제란 : OS (Operating System)

  • 특정한 기능을 하는 하나의 프로그램이다
  • 일반적으로 커널에 여러가지가 추가된 상태를 운영체제라 하며, 커널은 운영체제의 코어이다
💡 주요 운영체제
윈도우 ,UNIX 계열 OS (리눅스), Mac OS

 

운영체제라는 커널이 있고 운영체제 위에서 돌아가는 프로그램들이 있다. 그걸 응용프로그램이라 하는데 흔히 우리가 사용하는 excel, ppt, vscode 같은것을 말한다.

 

💡 안드로이드는 OS일까?
안드로이드는 운영체제가 아니다. 안드로이드는 리눅스 커널 기반이다.


✅ 커널과 쉘 이해

커널에 여러가지가 추가된 걸 운영체제라 했는데 추가된 여러가지가 무엇이 있을까?

대표적으로 쉘(Shell)이 있다.

운영체제는 가장 큰 역할 중 하나가 사용자가 컴퓨터를 사용할 수 있게끔 해주는 것이다.
그럼 사용자에게 사용법을 제공해 줘야 할텐데 그 사용법을 제공해주는 프로그램이 쉘이라 할 수 있다.

사용법을 기술적으로 얘기하자면 인터페이스를 제공한다고 할 수 있다.

쉘은 운영체제의 커널은 아니며, 커널 위에서 동작하는 일종의 응용 프로그램이라 할 수 있다.

쉘은 두가지 타입이 있는데 터미널 환경과, GUI 두 종류로 분류 된다.

터미널 환경은 리눅스 bash 같은 것인데 명령어를 통해 사용할 수 있어 일반 사람들에게 익숙하지 않아 컴퓨터를 사용하기 어려웠다.

그래서 나온게, GUI환경이다.

GUI환경이란 운영체제의 기능을 사용하기 위해서 좀 더 쉬운 인터페이스를 제공하는것을 말한다.

우리가 현재 보는 컴퓨터 화면 그자체를 생각하면 쉽게 접근할 수 있다. 마우스로 클릭해서 실행 하게 할 수 있거나, X버튼을 눌러 끄거나 할 수 있는게 GUI환경으로 인해 가능한 것이다.

 

💡 쉘 사용 이유 정리
운영체제 커널만 제공해서는 사용자가 어떻게 사용할지 모르기 때문에 쉘을 제공해서(쉘만 제공하는건 아니다) 사용자로부터 입력을 받아 커널이 그에 따른 동작을 할 수 있게끔  쉘 프로그램을 운영체제에서 같이 제공한다.

 

✅ 시스템 콜이란?
커널과 쉘 프로그램은 서로 어떻게 소통할까? 커널은 쉘프로그램에게 요청을 할 수 있도록 인터페이스를 제공해주는데  그걸 가리켜 시스템 콜이라고 한다.

 

시스템 콜은 함수형태로 구현돼 있다.

사용자가 파일을 읽는다는 명령을 내리면 커널에서 파일을 읽을 수 있게끔 하는 시스템 콜 함수를 호출해 파일을 읽는다.

커널은 시스템콜을 제공해주고 쉘은 시스템 콜을 사용하여 사용자가 커널의 기능을 사용할 수 있도록 사용법을 사용자에게 제공해 준다.

자바나 자바스크립트 같은 프로그래밍 언어들은 운영체제에 맞는 API가 구현 되있는데, API 내부에는 필요시 해당 운영체제의 시스템 콜을 호출하는 형태로 만들어 졌다.

※ 여기서 표현하는 API란 간단히 함수 또는 라이브러리라고 이해하면 된다.

운영체제를 만든다 가정했을때 추상화를 해보자면

  1. 운영체제를 개발한다. (kernel)
  2. 시스템콜을 개발한다.
  3. 시스템콜 기반, 프로그래밍 언어별 라이브러리 개발(API) 한다.
  4. 지원되는 프로그래밍 언어로 Shell 프로그램 개발한다.
  5. 지원되는 프로그래밍 언어로 응용 프로그램 개발한다.

정도가 되겠다.


 포팅(porting)의 이해
kernel이 C언어로만 만들어졌다해서 C언어로 만들어야 되는건 아니다. 프로그래밍 언어를 커널에 지원할 수 있도록 포팅(porting)이라는 개념이 있는데, 포팅 된 경우 예를 들어 파이썬, 자바스크립트가 커널에 포팅되있다면 해당 언어들을 사용할 수 있다.

댓글