without haste but without rest
운영체제 요약 본문
1. 운영체제
하드웨어는 스스로 작동할 수가 없어서, 하드웨어를 다루는 소프트웨어가 필요한데 이것이 운영체제이고 펌웨어라고도 한다. 따라서 운영체제의 목적은 하드웨어 리소스를 효율적으로 활용할 수 있도록 돕는 소프트웨어다. 크게 커널과 인터페이스로 구성되어 있다.
2. 커널과 인터페이스
커널: 운영체제의 핵심 기능들을 모아둔 것
인터페이스: 커널에 명령을 전달하고 실행 결과를 돌려주는 기능을 제공한다.
커널과 인터페이스로 구분이 되는 이유는 유저가 커널을 보호하기 위해서 직접 접근하는 것을 차단하고 시스템콜 같이 미리 정의된 형태로만 사용하게 했다. 프로그래밍 랭귀지의 open이나 print 함수도 인터페이스로 시스템콜에 해당한다. (하드웨어의 인터페이스는 드라이버)
3. 프로그램과 프로세스
프로그램은 저장장치에 저장되어 있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라온 동적인 상태로 메인 메모리에서 실행 중인 프로그램을 프로세스라고 한다.
4. 스레드
스레드는 프로세스 내에서 스택 영역만 따로 할당 받고 코드, 데이터, 힙 영역은 공유하는 프로세스 내에서의 작업 단위다.
5. 인터럽트
CPU가 프로세스를 실행할 때 IO장치 혹은 프로세스에 예외상황이 발생하여 처리가 필요할 때 CPU에 이를 알리고 스택 자료구를 활용하여 처리하는 기술이다.
6. 컴파일러
소스 코드를 기계어로 번역하는 프로그램이다. 초기 컴퓨터 프로그램들은 어셈블리로 작성했는데, CPU 아키텍처 변경에 따라 매번 같은 프로그램을 작성하고, 메모리 사이즈 변경에 따라서 코드가 변경되어야해서 생산성에 문제가 있었다. 컴파일러는 만들어두면 앞서 언급한 생산성 문제를 해결할 수 있게 되었다. 하지만 어셈블리 대비 속도가 떨어진다. 컴파일러는 사용자가 소스코드를 작성하면 컴파일하고 라이브러리와 연결한 뒤 동적 라이브러리를 포함하고 최종 실행 순서로 실행한다.
7. CPU 스케줄링
CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 변화를 조정하는 일을 담당한다. 리소스를 공평하고 효율적이고 안정적으로 활용하는 것이 목적이다.
8. IPC (Inter Process Communication)
복잡한 프로그램에서 여러개의 프로세스가 서로 통신하는 방법
9. 공유 자원
여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일
10. 임계 구역
공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역을 말한다. 이를 해결하기 위한 방법 중 하나로 세마포어가 있는데, 세마포어는 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계 구역에 들어가는 방법
11. 교착 상태(데드락)
2개 이상의 프로세스가 서로 필요한 자원을 점유하고 있어서, 다른 프로세스의 작업이 끝나는 것을 기다리는 상태. 자원 할당 그래프를 모니터링 하면서 교착 상태를 일으킨 모든 프로세스를 종료시키는 방법, 순서대로 종료시켜서 회복하는 방법 등이 있다.
12. 가상 메모리
프로그램을 실행할 때 한 번에 모두 메모리에 올리지 않고 필요한 부분만 단계적으로 메모리에 올려서 물리 메모리를 효율적으로 사용하는 방법. 페이징 기법과 세그먼테이션 기법 등이 있다. 페이징은 물리 주소 공간을 모두 같은 크기로 나누는 방법이고 세그먼테이션은 물리 메모리를 프로세스 크기에 따라 가변적으로 나누어 사용하는 방법
13. 요구 페이징
사용자가 요청할 때 해당 페이지를 메모리에 가져오는 것
14. 프로토콜
서로 다른 기기간에 통신을 하기 위한 통신 규약이다.
15. LAN
몇 킬로미터 내의 네트워크를 연결할 수 있다.
16. WAN
여러 종류의 LAN을 선으로 연결하여 하나의 네트워크로 만든 것이다. LAN이 하나로 연결된 후에는 서로 다른 LAN 사이에 데이터 전송을 위한 프로토콜이 설계되었고 이것이 IP(Internet Protocol)이다. 초기 IP는 데이터 누락 등의 문제가 발생했고 이를 보완하여 개발된 TCP는 데이터 전송 시 오류를 바로잡는 프로토콜이다. TCP는 IP위에서 작동하도록 설계되어서 TCP/IP라고 부른다.
'Computer Science > OS' 카테고리의 다른 글
[OS] 03. 프로세스 스케쥴링 (0) | 2021.07.01 |
---|---|
[OS] 02. 시스템콜 (0) | 2021.07.01 |
[OS] 01. 운영체제 개요 (0) | 2021.06.30 |
[VM] VDI, VHD, VMDK 차이점 (0) | 2020.03.01 |