💨운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며,
user가 컴퓨터를 편리하고, 효과적으로 사용 할 수 있는 환경을 제공하는
여러 프로그램의 모임이다.
윈도우(window),맥 os(Mac Os), 리눅스(Linux), 유닉스(Unix)등이 있다.
- 프로세서, 기억장치, 입출력 장치 , 파일 및 정보 등의 자원관리
- 자원을 효율적으로 관리하기 위한 스케쥴링 기능
- 사용자와 시스템 간의 편리한 인터페이스를 제공
- 시스템의 각종 하드웨어와 네트워크를 관리 및 제어
- 데이터를 관리하고 데이터 및 자원의 공유 기능 제공
- 시스템의 오류를 검사 및 복구
- 자원 보호 기능 제공
- 입출력 보조 기능 제공
- 처리능력 증대 (Throughput)
💨 일정 시간 내에 시스템이 처리하는 일의 양- 응답시간 단축 (Turn Around Time)
💨 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간- 사용가능도 증대 (Availability)
💨 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도- 신뢰도 향상 (Reliabilty)
💨 시스템이 주어진 문제를 정확하게 해결하는 정도
커널은 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분
하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역활
컴퓨터 자원들을 관리하는 역활을 한다.
커널의 가장 큰 목표는 컴퓨터의 물리적 자원과 추상화 자원을 관리하는 것이다.
추상화 자원 ex)
CPU - TASK OR PROCESS , MEMORY - PAGE OR SEGMENT,
DISK - FILE , NETWORK - SOCKET 등등
커널의 작업 수행
- Task(Process) Management : 물리적 자원인 CPU를 추상적 자원인 Task로 제공
- Memory Management : 물리적 자원인 메모리를 추상적 자원인 Page 또는 Segement로 제공
- File System : 물리적 자원인 디스크를 추상적 자원인 File로 제공
- Network Managment : 물리적 자원인 네트워크 장치를 추상적 자원인 Socket으로 제공
- Device Driver Management : 각종 외부 장치에 대한 접근
- Interrupt Handling : 인터럽트 핸들러
- I/O Communication : 입출력 통신 관리
한 줄 요약
커널은 사용자가 System Call을 통해 컴퓨터 자원을 사용할 수 있게해주는 자원 관리자
운영체제는 크게 두 부분으로 나뉘는데, 커널에 명령을 전달하고, 실행결과를 전달하는
인터페이스와 운영체제의 핵심기능을 모아놓은 커널이다.
운영체제는 커널과 인터페이스를 분리하여, 같은 커널이어도 다른 인터페이스로 제작 가능하다.
ex) 유닉스의 쉘
인터페이스에 따라 ux의 정도가 다르므로, 운영체제를 어렵게 느끼곤 한다.
커널이 자신을 보호하기 위해 만든 인터페이스이다.
커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.
[ open()이란 시스템 콜을 호출시 ]
운영체제는 '커널모드' 와 '사용자모드'로 나뉘어 구동되는데,
파일을 읽어오거나, 쓰거나, 화면에 메시지 출력등 일련의 기능들에서 커널모드를 사용한다.
시스템 콜은 이런 커널 영역의 기능을 '사용자모드' 가 사용가능하게,
프로세스가 직접 하드웨어에 접근해서 필요한 기능을 사용할 수 있게 해준다.
시스템 콜의 유형
- 프로세스 제어
- 파일 조작
- 장치 조작
- 정보 유지보수
- 통신과 보호
컴퓨터의 모든 물리적부품,장치 등을 뜻한다.
입력,출력,연산,제어,기억등 다섯가지 기능을 구현
입력장치와 출력장치로 나누어지는데
시스템 버스란?
하드웨어 구성 요소를 물리적으로 연결하는 선'을 의미한다.
각 구성 요소가 다른 구성 요소로 데이터를 보낼 수 있도록 통로가 되어주는데,
용도에 따라 데이터 버스, 주소 버스, 제어 버스로 나누어진다.
데이터 버스
중앙처리장치와 기타 장치 사이에서 데이터를 전달하는 통로이다. 기억장치와 입출력장치의 명령어와 데이터를 중앙처리장치로 보내거나, 중앙처리장치의 연산 결과를 기억장치와 입출력장치로 보내므로 양방향 버스이다.
주소 버스
데이터를 정확히 실어 나르기 위해서는 기억장치 '주소'를 정해주어야 한다. 주소 버스는 중앙처리장치가 주기억장치나 입출력장치로 기억장치 주소를 전달하는 통로이기 때문에 단방향 버스이다. 주소 선의 수는 시스템의 기억장치 용량을 결정한다. 수가 많을수록 당연히 접근할 수 있는 기억 용량이 커진다. 예를 들어 주소 선의 수가 8비트이면 주소를 256개 지정할 수 있으며 16비트이면 65,536개를 지정할 수 있다.
제어 버스
제어 버스는 중앙처리장치가 기억장치나 입출력장치에 제어 신호를 전달하는 통로이다. 제어 신호에는 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락, 리셋 등이 있고 제어 버스는 읽기 동작과 쓰기 동작을 모두 수행하기 때문에 양방향 버스입니다.
특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램이다.
컴퓨터를 구성하는 다양한 입출력 장치마다 각각 장치드라이버가 프로그램 되어 커널에 통합되어 실행한다.
요청 프로그램이 드라이버의 명령어를 호출하면, 드라이버는 장치에 명령어를 전달.
장치가 드라이버에게 데이터를 돌려 주면, 드라이버는 원래 요청한 프로그램의 명령어로 데이터를 다시 전달.
드라이버는 하드웨어에 의존하며, 특정한 운영 체제를 따른다.
리눅스 /proc/devices에서 확인가능
확장자 - sys 윈도우, ko 리눅스
블루 스크린의 대부분의 원인이 디바이스 드라이버? 라고 한다.
운영체제와 응용프로그램의 관계
응용 프로그램을 실행시킨다.
응용 프로그램간의 권한을 관리해준다.
즉 운영체제는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원하는 것.
API(Application Programming Interface)
모듈화하여, 만들어진 어떤 기능을 제어/제공하는 인터페이스 이다.
SDK(Software Development Kit)
s/w개발도구모음이라 한다.
API, IDE, 문서, 라이브러리, 코드 샘플 및 기타 유틸리티가 포함될 수 있다.
SDK는 프로그램 및 응용 프로그램 개발의 복잡성을 줄이는 강력한 기능 집합이다.
즉 API는 SDK에 포함되는 부분집합이라 할 수 있다.
https://jhnyang.tistory.com/16
https://math-coding.tistory.com/80