직역하면 작동하는 시스템이다. 알려진 주요 운영체제는 윈도우 내가 제일 싫어하는 리눅스, mac(OS)이다. 보통은 윈도우와 macos가 익숙하지만 개발자라면 리눅스 환경에서 터미널을 이용해보는 작업을 필수는 아니지만 필요하다고 생각합니다.
운영체제가 제공하는 것
- 사용자 인터페이스 제공 : 쉘
- 응용프로그램 인터페이스 제공 : 시스템콜
- 프로그래밍 언어별 해당 운영체제에 맞는 API 구현
1. Shell(쉘):
- 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램
- 쉘은 터미널 환경인 CLI와 GUI 두 종류로 분류된다**
가장 유명한 쉘은 리눅스 bash!2. System Call(시스템콜):
시스템 콜 또는 시스템 호출 인터페이스
운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공
C/C++언어로 되어 있음
3. API(Application Programming Interface):
간단하게 함수 또는 라이브러리
API 내부에는 필요시 해당 운영체제의 시스템콜을 호출하는 형태로 만들어짐
왜 프로그램이 os별로 있을까요?
-> 각 언어별로 api도 다르고 시스템콜도 다르기 때문!
CPU Protection Ring
- 사용자 모드 : 응용프로그램 사용
- 커널 모드 : OS가 사용
- 시스템 콜은 커널 모드로 실행함
따라서 사용자 모드와 커널모드를 오가며 응용프로그램과 운영체제가 작동함
정리:
1. 시스템 자원 관리자
2. 사용자와 컴퓨터간의 커뮤니케이션 지원
3. 응용 프로그램 제어
운영체제 위에서 돌아가는 프로그램
PC의 응용프로그램 : Application
모바일의 응용프로그램 : App
따라서 운영체제는 사용자가 사용하는 응요 프로그램이 효율적이고 적절하게 동작하도록 지원한다!
1. 배치 처리 시스템
2. 시분할 시스템
3. 멀티 태스킹
여러 프로그램을 순차적으로 진행 : QUEUE 자료구조
단점으로는 다른 프로그램을 실행하는데 시간 소모가 큼
UNIX -> 리눅스로 발전
다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템
서버 컴퓨터에서 일반적으로 사용
단일 CPU에서 여러 응용 프로그램이 동시 실행되는 것처럼 보이는 시스템
10~20ms의 작은 단위로도 실행 응답시간, 응용프로그램이 바뀜