공개 OS와 비공개 OS
보통 소스 코드 작성 후 이를 컴파일하여 얻은 바이너리 파일을 실행함으로써 프로그램을 실행한다.
즉, 비공개 OS는 바이너리 파일만 제공하는 것으로 내부 코드를 모르니 어떻게 프로그래밍 했는지는 알 수 없다. 반대로 공개 OS는 소스 코드를 공개했다는 의미임.
🧐 왜 돈을 받고 팔아도 아까울 판에 소스 코드를 공개할까?
소스 코드를 공개하면 많은 사람들이 각자의 상황에 맞게 코드를 수정 및 개선할 수 있고 이를 통해 시장에 점유율을 높이고, 네임벨류가 올라갈 수 있다는 SW시장의 특수성 때문에 소스 코드를 공개한다
운영체제의 좁은 의미와 넓은 의미
- 좁은 의미
- 커널이라고 부르기도 한다.
- OS의 가장 핵심적인 부분이며, 메모리에 항상 상주하고 있다.
- 넓은 의미
- 부가적인 유틸리티를 포함하는 개념이다. (ex.파일 복사 등)
- 항상 메모리에 상주하는 것은 아니며 독립적인 실행파일을 갖는 것이라고 볼 수 있음
운영체제의 분류
1. 동시 작업 가능 여부
- 단일 작업 (single tasking)
- 한 번에 하나의 작업만 처리
- ex. MS-DOS 프롬포트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
- 다중 작업 (multi tasking)
- 동시에 두 개 이상의 작업 처리
- ex. 유닉스, 윈도우즈 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램등을 수행할 수 있음
2. 사용자의 수
- 단일 사용자 (single user)
- 다중 사용자 (multi user)
3. 처리 방식
-
일괄 처리 (batch processing)
- 작업 요청의 일정량을 모아서 한꺼번에 처리
- 작업이 완전 종료될 때까지 기다려야함
- 하나의 처리를 통해 작업을 매번 해야하는 것은 불편하다
- ex. 초기 punch card 처리 시스템
-
시분할 (time sharing)

- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
- interactive한 방식
-
실시간 (realtime)
- 데드라인을 반드시 만족하는 시스템
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS
- Hard realtime systen (ex. 미사일 제어)
- Sofr realtime system (ex. 비디오 재생 - 24fps을 지키지 못하면 재생이 원활히 되지 않는 경우)
용어 정리
- multitasking
- multiprogramming
- 메모리 에 여러 프로그램이 동시에 올라가 있는 상황을 강조
- time sharing
- 하나의 cpu 를 가지고 시간을 분할하여 나누어 쓴다는 의미 강조
- multiprocess
- multiprocessor
- 위의 용어들과는 다른 의미를 가짐
- 하나의 컴퓨터에 CPU(processor)가 여러개 붙어 있음을 의미
운영체제의 예시
- 유닉스(UNIX)
- 리눅스보다 먼저 나온 OS이며, 리눅스도 결국 유닉스 계열
- 대형 서버 를 위해 만들어진 OS 이므로 매우 복잡한 시스템을 갖추고 있음
- HW 제어는 어셈블리 언어를 통해 해야하는데 사람이 이해하기엔 매우 어렵기 때문에 이 때 C언어를 만들었으며, 따라서 유닉스 코드의 대부분은 C언어로 작성됨
- C언어는 high level 언어이기에 사용자가 이해하기 편하여 프로그램 개발에 용이하게 됨
- 최소한의 커널 구조를 갖추고 있어 확장에 용이함
- 다양한 버전
- system V, FreeBSD, SunOS, Solaris
- Linux
- DOS(Disk Operating System)
- MS사에서 1981년 개인 PC를 위해 개발
- 단일 사용자용 OS
- MS Windows
- 초기엔 DOS 위에서 돌아가는 응용프로그램 형태였음
- MS사의 다중 작업용 GUI 기반 OS
- 계속 업데이트 되고 있음
- 안드로이드, IOS
- OS이자 소프트웨어 플랫폼으로도 일컫음
- 리눅스 커널을 사용함
운영 체제의 구조
