운영체제 기본

ROK·2021년 12월 30일
0

운영체제를 쉽게 설명하는 예시
운영체제란 컴퓨터라는 대저택을 관리하는 집사와 같은 존재
집주인(최고관리자)의 권한을 위임받아 요리사, 정원사, 청소부 등 각각의 보조 인원(어플리케이션)들에게 재산(연산 자원)을 적절히 분배하여 운영하고, 서로 권한을 침범할 수 없도록 관리하는 역할을 맡는다

리눅스 그 자체가 운영체제가 아니고 우분투, 데비안, 레드햇 등이 리눅스를 커널로 사용하는 운영체제이다

운영체제의 구조

운영체재 내부는 알맹이인 커널(kernel)과 껍데기인 셸(shell)로 이루어져 있다

커널

우분투의 커널은 리눅스, 마이크로소프트 윈도우(Windows)의 경우 Windows NT라는 커널을 사용, MacOS의 경우 XNU(XNU is Not Unix의 약자)커널을 사용

셸은 말 그대로 눈에 보이는 운영체제의 껍데기로, 그래픽 기반의 GUI(Graphical User Interface) 셸과 텍스트 기반의 CLI(Command Line Interface) 셸로 구분할 수 있다

GUI셸

  • 사용자가 창, 아이콘, 메뉴와 같은 그래픽 요소를 사용하여 시스템과 상호작용한다
  • 사용자가 명령을 기억할 필요없이 마우스 클릭이나 드래그로 작업을 수행 직관적으로 사용 가능
  • CLI에 비해 메모리 사용량이 많고 실행속도가 느린 단점이 있다
  • ex) 검색창, 메뉴, 아이콘, 파일탐색기 등
  • Windows : Windows shell, MacOS : Aqua, Linux : GNOME, Unity 등 (리눅스의 경우 단독으로 동작하기보다 Xorg등 다른 종류의 프로그램들과 함께 사용)
    CLI셸
  • 사용자가 명령(Command Line)을 사용하여 시스템과 상호작용한다
  • 사용자가 명령을 입력하면 터미널 또는 셸이 해당 명령을 해석함으로 작업을 수행
  • GUI보다 메모리 사용량이 적고 실행속도가 빠르지만 명령어를 알아야하는 어려움이 있다
  • Window : CMD.exe와 PowerShell, MacOS와 Linux : Terminal(리눅스와 MacOS의 경우 기본적인 sh와 bash이 설치되어 있고 필요에 따라 zsh과 같은 셸을 추가로 설치 가능)

프로세스와 스레드

프로그램은 컴퓨터가 수행할 작업을 기록해놓은 것을 의미한다
프로그램이 실제로 작업으로서 수행될 때 운영체제는 프로세스(process)라는 단위로 관리한다
운영체제는 프로세스 단위로 메모리와 CPU 연산 등 컴퓨팅 자원을 분배한다

메모리 관리 : 운영체제는 프로세스가 컴퓨터의 전체 메모리 어디든지 쓸 수 있도록 하는 것이 아니라 가상 메모리(Virtual memory)로써 일부만 떼어서 제공, 다른 프로세스의 메모리 또는 운영체제가 사용하고 있는 커널의 메모리를 훔쳐볼 수 없도록 한다
이를 운영체제의 중요한 보안 기제 중 하나인 프로세스 격리(process isolation)라고 하고, 이로인해 프로세스들이 서로 소통하기 위해서는 별도로 허용된 프로세스 간 통신(Inter-Process Communication, IPC) 기법들을 사용해야 한다

CPU 자원 관리 : 메모리는 주소로서 프로세스에게 제공되지만, CPU 연산의 경우 코어 단위로 프로세스에 제공된다. 프로세스는 스레드(thread)라는 단위로 코어 하나씩 사용할 수 있는데, 프로세스가 하나 시작되면 기본적으로 하나의 스레드를 가지고 시작하지만 개발자는 프로그램이 더 많은 스레드를 사용하도록 설계하여 다중 CPU 코어의 이점을 극대화 할 수 있다

프로세스와 스레드는 내용 추가 및 설명 정리 필요

쉽게 말해 프로세스는 운영체제가 메모리를 할당하는 작업단위, 스레드는 프로세스가 할당받은 메모리를 활용하는 실행단위
하나의 프로그램안에서 여러개의 프로세스를 활용하는 것을 멀티프로세싱(Multiprocessing),
하나의 프로세스안에서 여러개의 스레드를 활용하는 것을 멀티스레딩(Multithreading)이라고 한다

profile
하루에 집중하자

0개의 댓글