개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
경성대학교 양희재 교수님 수업 영상을 듣고 정리하였습니다.

Operating System 운영체제

컴퓨터를 제어하고 관리해주는 프로그램.
os: windowXP, linux, macOSX...

만약 이러한 os가 없는 컴퓨터는 어떤 상태일까?

  • 일반적으로 컴퓨터는 processor(처리기)memory(메인 메모리)로 구성이 되어있다.
  • 어떤 프로그램을 실행하기 전에 메모리에 명령들을 기록해놓는다.
    • (이때 명령들을 instuction이라고하고, 이 instuction의 집합을 프로그램이라고 한다.)
  • 이 프로그램들을 미리 메모리에 내장해두고 실행하기에 이런 구조의 컴퓨터를 프로그램 내장형 컴퓨터 라고 한다.(Stored program concept)

그런데 이러한 메모리에 아무런 운영체제가 깔려있지 않는다면?

  • 컴퓨터의 메모리에는 자기 멋대로의 임의의 값들이 들어있다.
  • 그래서 명령을 들고와서 실행을 하려해도 멋대로 명령이 들어오기에 할수 있는 일이 없다.

컴퓨터라고 하는 것은 전원을 키면 어떤 일이 일어나는가?

  • 휘발성 메모리: 전기를 끄면 그 내용이 다 사라짐 (램과 같음)
  • 운영체제가 없는 상태에서 전원을 껐다 키면 자기멋대로의 값이 있기 때문에 실행이 들어와도 자기 멋대로의 명령이 실행됨
  • 운영체제 없는 컴퓨터는 야생마 같다.

즉, 우리가 사용을 못한다.

운영체제가 하는일?!

  • 프로그램을 실행하기 위해 하드디스크 안에 들어있는 실행파일들을 메모리에 올려준다.
  • 하나의 프로세서(cpu)만으로도 여러개의 프로그램을 실행할 수 있도록 한다.(메모리에 동시에 올라가 실행할 수 있도록)
  • 컴퓨터의 파일을 프린트에 인쇄할 수 있도록 해준다.
  • 문서를 편집하고 하드디스크에 저장하는 것또한 가능하게 해준다. 등등등

운영체제가 있기 때문에 이 컴퓨터를 온전히 쓸수 있는것이고, 그게 없으면 그 컴퓨터는 그냥 폭주하는 컴퓨터, 제어가 불가능한 컴퓨터가 되는것.

즉, 컴퓨터의 하드웨어(프로세서, 프린트, 메모리, 하드디스크, 키보드, 마우스, 모니터, 네트워크, 스피커, 마이크 등)를 잘 관리해서

  1. Performance: 성능 향상(좋은 os를 설치하면 내 컴퓨터의 성능도 좋아진다.)
  2. Convenience: 사용자 편의 제공 (os가 있기에 우리가 원하는대로 사용이 가능한 것)

즉, 운영체제는 컴퓨터를 제어하고 관리해주는 프로그램 (Control progran for computer) 이다.

부팅(Booting)

막간, 컴퓨터 구조 지식)

  1. 컴퓨터 구조에 따르면 컴퓨터라는 것은 프로세서와 메인 메모리로 구성되어있다.
  2. 그 외에도 보통의 컴퓨터에는 하드디스크라는 보조기억장치를 가지고 있다.
  3. 메인메모리는 램과 롬으로 구성되어 있다.
  • 램(RAM): 메모리의 대부분을 차지하고 있는것 (우리 컴퓨터 메모리가 4GB라고 한다면 그것은 램을 의미하는 것) MB, GB -> 10의 9승
  • 롬(ROM): 극히 일부분이고 사이즈가 별로 없어도 되는데 KB 정도임 -> 10의 3승

우리가 전원을 껏다키면 램의 내용은 휘발성메모리이기에 다 날아가 버린다. 그렇기 때문에 전원을 껏다키면 메모리 안의 내용은 유지되지 않고 다 날아가버린다. 그런데 이 전원에 관계없이 계속해서 남아있는게 있는데 그게 하드디스크이다. 이 하드디스크와 메인메모리의 롬은 전원과 관계 없이 내용이 그대로 남아있다.

우리가 잘 아는 롬은 휴대폰 안에 들어있는 플래쉬메모리 또한 전원과 관계없이 내용이 남아있다.

컴퓨터의 전원을 키는 순간 컴퓨터에서 일어나는 현상들

  • 파워을 처음에 딱 껏다가 키면 프로세서는 롬 부분의 코드를 읽어온다. 즉, 롬 안의 instuction을 읽어와서 실행한다.
  • 이 프로그램에 제일 먼저 있는 내용은 POST(Power on self-test) 프로그램이다.
    • 전기를 키면은 컴퓨터가 모든 환경설정이 제대로 되어있는가를 확인
    • 키보드 연결되어잇는가, 메인 메모리는 얼마나? 프린트는? 이런것들을 테스트 > 셀프테스트
  • POST가 먼저 실행되고 내 컴퓨터 안에는 메모리가 얼마고, 하드디스크 용량은 얼마고를 확인하고
  • 그 다음으로는 boot load라는 것이 실행된다.
  • 이 부트로드를 통해서 하드디스크 안에 들어있던 os를 메인메모리로 가져오게 된다.

Boot Load

위에서 먼저 언급했던 것처럼 처음 전기를 키면 롬에 있는 코드가 실행되어 POST가 실행되고 boot load가 실행된다.

일반적으로 운영체제는 하드디스크 안에 설치가 된다.

하드디스크 안의 운영체제가 있고 boot load는 하드디스크를 뒤져서 운영체제를 메인메모리로 가져오는 역할을 한다.

부트로드라고 하는 작은프로그램이 하는 일은 하드디스크의 몇번째 어디에 운영체제가 있다는것을 알아서 메인메모리의 램 영역으로 가져오는 역할을 한다. 그래서 하드디스크에 있던 운영체제가 메인메모리로 올라오게 된다. 이렇게 하드디스크에 있던 운영체제가 메인메모리로 올라오는것을 부팅(booting)이라고 한다. 메인메모리로 운영체제를 들고오게되면 이제 더이상 롬의 프로그램은 실행될 것이 없다. 이렇게 롬의 역할은 끝나게 되는것이고 롬은 파워를 키는 그 순간에만 필요하고 그 이후에는 필요하지가 않다.

일단 운영체제가 메인메모리로 올라오게 되면, 우리가 친숙한 모니터에 익숙한 바탕화면이 나타나게 된다. 그러면 컴퓨터 모니터에는 바탕화면의 아이콘들이 모여잇는 초기화면이 나타나고 이떄, 바탕화면이 나타난다는 것은 운영체제가 메모리에 상주(residence)해서 이제 무슨 명령이든 받을 준비가 다 되어있으며 일을 시켜도 된다는 것을 의미한다. = 준비되어 제어가 된 상태 (사용자가 마음대로 제어할 수 있는 단계가 된 것.)

즉, 모든 제어를 운영체제가 해주기때문에 누구든 쉽게 사용이 가능하게 된다.

그리고 운영체제는 컴퓨터의 성능도 높여주는데, 이 운영체제가 사라지는 순간은 컴퓨터의 전기를 끄는순간 메모리에서 사라진다. 다른 일반 사용자 프로그램들은 메모리에 올라왔다가 사라지기를 반복한다. 만약 운영체제가 돌아가고 있는 상황에서 우리가 hwp를 사용한다고 하면 그게 메인메모리에 올라오게되고 해당 프로그램을 편집하고 종료하면 hwp 프로그램은 메모리에서 사라진다. 이렇게 다양한 프로그램들은 메모리에 올라왔다가 사라지고 그렇게 돌아가기를 반복한다.

그러나 os는 항상 그 자리에 잇음 = 메모리의 레지던트(상주한다)

즉, 운영체제는 컴퓨터가 꺼질때까지 메인 메모리에 상주한다.

따라서 운영체제라는 것은 결국...

  • 컴퓨터를 관리하는 프로그램 (사용자가 원하는 대로 제어 가능하도록 만들어주는 것)
  • 무엇을 관리? 여러 하드웨어 장치들을 관리

그런 운영체제는 크게 두가지로 나뉜다 - Kernel과 Shell(Command Interpreter)

컴퓨터 제일 내부에는 하드웨어가 있고 하드웨어를 제어하고 관리해주는 os가 하드웨어를 둘러싸고 있다.

  • 커널(Kernel): 핵심&핵, 하드웨어를 제어하고 관리하는 os의 부분, os에서 가장 중요한 부분
    • 메모리, 디스트, cpu등을 실질적으로 관리하는 프로그램
  • 명령해석기(command interpreter, shell): os의 껍질
    • 사용자가 어떤 명령을 내리면 그 명령을 해석해 결과를 화면에 보여주는 역할

컴퓨터에 윈도우를 깔면 여러개의 아이콘들이 모여있는데 이 아이콘들을 실행하려면 마우스를 들고가서 더블클릭을 해야한다. 이렇게 우리가 마우스를 들고가서 프로그램을 실행하려고 하는 행위, 내가 어떤 프로그램을 실행하기 위한 명령을 내릴 수 있도록 만들어 준것을 os의 command interpreter라고 한다. 일반적으로 윈도우는 그래픽 환경에서 명령을 내리고 리눅스는 텍스트를 기반으로 명령을 내리린다. 그래서 우리가 쉘에 명령을 내리면 그 쉘이 하드디스크를 뒤져서 해당 명령에 대한 결과를 보여준다.

리눅스 명령어 약간의 팁!

- ls(list): 현재 디렉토리에 존재하는 파일의 이름을 알고 싶을때
- who: 리눅스는 서버운영체제이기 때문에 한번에 여러명이 사용한다 ,누가 이 컴퓨터를 사용하는지 알아볼때
- df(disk free): 이컴퓨터의 하드디스크 용량은 얼마고 얼마를 사용햇는지 확인

즉, shell과 interpreter는 os의 바깥부분에 위치해서 사용자로부터 명령을 받고, 그 명령을 인터프리터를 통해 해석/번역하여 해당 명령을 실행하는 것을 의미한다.

그래서 커널은 실질적으로 우리 눈에는 보이지 않고 (관리하는 애니까) 우리는 주로 껍질을 보게 된다. 즉, 우리가 일반적으로 윈도우를 잘 안다고 하는것은 그 윈도우를 사용하는 법을 잘 안다는 것이고 그 사용법을 잘 안다는 의미는 이 껍질을 잘 안다는 뜻이다.

우리가 공부하는 운영체제는 껍질이 아닌 커널!

운영체제의 위치

컴퓨터는 하드웨어 > 운영체제(커널+쉘) > 애플리케이션 이렇게 구성되어있다.

이때 애플리케이션은 응용 프로그램으로(App, application)을 의미하고 이 앱들은 os위에서 실행되며 따라서 만약 os가 달라지면 이 프로그램(앱)들은 사용이 불가능하다. 하드웨어가 같음에도 불구하고 사용이 불가능한 이유는 os가 다르기 때문이다. 애플리케이션은 하드웨어 위에서 도는게 아니라 os 위에서 돌고있기에 한 프로그램을 돌게 하기 위해서는 반드시 os가 반드시 필요하다.

즉, 컴퓨터의 제일 밑에는 하드웨어가 있고, 이런 하드웨어들이 컴퓨터의 하드웨어를 이루고 있고 이 하드웨어들을 제어/통제해주는 프로그램이 운영체제이다. 운영체제 위에는 어플리케이션 프로그램이 있고 프로그램들은 하드웨어 자원을 사용하고 있지만, 하드웨어 자원을 직접적으로 사용하는게 아니라 os가 중간에 관리해주는대로 하드웨어 자원을 사용하고 있다.

  • 하드웨어 예: cpu, 메모리, 프린터, 모니터, 키보드, 마우스, 램카드, 스피커, 마이크 등등
  • 어플리케이션(프로그램) 예: ms word, hwp, 게임, 데이터베이스, 인터넷 익스플로어, mp3, 비디오 플레이어 등등

운영체제 vs 정부

운영체제는 정부와 비슷하다. 즉, os도 여러가지 부서가 있다.

  • process management: cpu 즉 프로세를 관리
  • memory management: 메인 메모리를 관리
  • io management: 입출력
  • file management: 하드 디스크의 파일들 관리
  • network management: 네트워크 관리
  • security/protection management: 컴퓨터의 보안을 관리

하드웨어를 자원이라고 하고 이 자원들을 관리하는 것이 os!
os의 다른 이름은 resource manage라고 한다.
하드웨어 자원을 애플리케이션에 할당해주는 것을 os가 하는 일이다.