📖 운영체제 개념 이해
✅ 운영체제란 : OS (Operating System)
- 특정한 기능을 하는 하나의 프로그램이다
- 일반적으로 커널에 여러가지가 추가된 상태를 운영체제라 하며, 커널은 운영체제의 코어이다
💡 주요 운영체제
윈도우 ,UNIX 계열 OS (리눅스), Mac OS
운영체제라는 커널이 있고 운영체제 위에서 돌아가는 프로그램들이 있다. 그걸 응용프로그램이라 하는데 흔히 우리가 사용하는 excel, ppt, vscode 같은것을 말한다.
💡 안드로이드는 OS일까?
안드로이드는 운영체제가 아니다. 안드로이드는 리눅스 커널 기반이다.
✅ 커널과 쉘 이해
커널에 여러가지가 추가된 걸 운영체제라 했는데 추가된 여러가지가 무엇이 있을까?
대표적으로 쉘(Shell)이 있다.
운영체제는 가장 큰 역할 중 하나가 사용자가 컴퓨터를 사용할 수 있게끔 해주는 것이다.
그럼 사용자에게 사용법을 제공해 줘야 할텐데 그 사용법을 제공해주는 프로그램이 쉘이라 할 수 있다.
사용법을 기술적으로 얘기하자면 인터페이스를 제공한다고 할 수 있다.
쉘은 운영체제의 커널은 아니며, 커널 위에서 동작하는 일종의 응용 프로그램이라 할 수 있다.
쉘은 두가지 타입이 있는데 터미널 환경과, GUI 두 종류로 분류 된다.
터미널 환경은 리눅스 bash 같은 것인데 명령어를 통해 사용할 수 있어 일반 사람들에게 익숙하지 않아 컴퓨터를 사용하기 어려웠다.
그래서 나온게, GUI환경이다.
GUI환경이란 운영체제의 기능을 사용하기 위해서 좀 더 쉬운 인터페이스를 제공하는것을 말한다.
우리가 현재 보는 컴퓨터 화면 그자체를 생각하면 쉽게 접근할 수 있다. 마우스로 클릭해서 실행 하게 할 수 있거나, X버튼을 눌러 끄거나 할 수 있는게 GUI환경으로 인해 가능한 것이다.
💡 쉘 사용 이유 정리
운영체제 커널만 제공해서는 사용자가 어떻게 사용할지 모르기 때문에 쉘을 제공해서(쉘만 제공하는건 아니다) 사용자로부터 입력을 받아 커널이 그에 따른 동작을 할 수 있게끔 쉘 프로그램을 운영체제에서 같이 제공한다.
✅ 시스템 콜이란?
커널과 쉘 프로그램은 서로 어떻게 소통할까? 커널은 쉘프로그램에게 요청을 할 수 있도록 인터페이스를 제공해주는데 그걸 가리켜 시스템 콜이라고 한다.
시스템 콜은 함수형태로 구현돼 있다.
사용자가 파일을 읽는다는 명령을 내리면 커널에서 파일을 읽을 수 있게끔 하는 시스템 콜 함수를 호출해 파일을 읽는다.
커널은 시스템콜을 제공해주고 쉘은 시스템 콜을 사용하여 사용자가 커널의 기능을 사용할 수 있도록 사용법을 사용자에게 제공해 준다.
자바나 자바스크립트 같은 프로그래밍 언어들은 운영체제에 맞는 API가 구현 되있는데, API 내부에는 필요시 해당 운영체제의 시스템 콜을 호출하는 형태로 만들어 졌다.
※ 여기서 표현하는 API란 간단히 함수 또는 라이브러리라고 이해하면 된다.
운영체제를 만든다 가정했을때 추상화를 해보자면
- 운영체제를 개발한다. (kernel)
- 시스템콜을 개발한다.
- 시스템콜 기반, 프로그래밍 언어별 라이브러리 개발(API) 한다.
- 지원되는 프로그래밍 언어로 Shell 프로그램 개발한다.
- 지원되는 프로그래밍 언어로 응용 프로그램 개발한다.
정도가 되겠다.
✅ 포팅(porting)의 이해
kernel이 C언어로만 만들어졌다해서 C언어로 만들어야 되는건 아니다. 프로그래밍 언어를 커널에 지원할 수 있도록 포팅(porting)이라는 개념이 있는데, 포팅 된 경우 예를 들어 파이썬, 자바스크립트가 커널에 포팅되있다면 해당 언어들을 사용할 수 있다.
'CS(Computer Science)' 카테고리의 다른 글
[CS] 운영체제 스케줄링 기본 및 알고리즘 이해 (0) | 2023.02.19 |
---|---|
[CS] 프로세스 개념 이해 (0) | 2023.02.19 |
[CS] 운영체제 역할 정리 (0) | 2023.02.19 |
[CS] 커널모드와 사용자모드 이해 (0) | 2023.02.19 |
[CS] 컴퓨터 구조 (0) | 2023.02.08 |
댓글