2023. 3. 18. 21:38ㆍ컴퓨터구조와 운영체제
운영체제에 대해 깊이 공부하기 전에, 운영체제가 어떤 것인 지 대략적으로 알아보도록 하겠습니다.
운영체제란?
쉽게 말해서, 컴퓨터의 자원을 ‘잘’ 사용하기 위한 소프트웨어이다.
‘잘’ 사용하는 것이랑 ‘운영체제’랑 어떤 관련이 있는 것인가??
바로 CPU가 1개이기때문이다!!
(멀티코어 CPU라고 해도 CPU보다 프로세스가 훨씬 더 많기 때문에 맥락상 큰 차이는 없다.)
CPU가 1개이기때문에 하나의 CPU가 여러 소프트웨어를 처리해야한다.
그렇다면, CPU는 ‘어떤 방식’으로 여러 소프트웨어를 처리할 것 인가?
여기서의 ‘어떤 방식’이 운영체제이다!
그러면 운영제제는 구체적으로 어떤 일을 하는 것일까?
운영체제의 기능
운영체제는 많은 기능이 있지만 크게보면 아래 3가지이다.
- 프로세스 관리
- 프로세스 적재,실행,종료
- 새 프로세스 생성
- 프로세스 스케줄
- 프로세스 동기화
- 메모리 관리
- 메모리 할당/반환
- 메모리 보호
- 디스크 영역으로 메모리 영역 확장(가상 메모리)
- 파일 시스템 관리
- 파일 생성/삭제
- 파일 열기/닫기
- 파일 읽기/쓰기
- 파일 저장 위치 관리
- 파일 속성 등 정보 관리
- 디스크의 빈 영역 등 저장 장치 관리
운영체제의 구조
운영체제는 크게 커널, 인터페이스, (Device driver)로 나뉜다.
커널
커널은 운영체제의 핵심이다.
- 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다.
- 따라서, 외부로 부터 직접 노출이 되면 안된다.
- 'System call' 이 만들어진 이유
- 응용 소프트웨어들은 커널에 요청함으로서 하드웨어 자원들을 이용하게 된다.
System call : 커널이 자신의 기능을 함수 형태로 제공해주는 것
Systemcall을 통해 입력값의 검증, 권한 확인, 작업 순서 제어등을 수행하여 커널을 보호해준다.
인터페이스
- 커널에 명령을 전달하고, 실행 결과를 알려주는 역할
Device driver
- 커널과 하드웨어의 중간에 위치
- 하드웨어에 대한 인터페이스
'운영체제가 다르면 프로그램의 호환이 안 된다.'는 말을 많이 들어봤을 것 이다.
왜?? 운영체제가 다르면 프로그램이 호환이 되지 않을 까??
바로!!
운영체제마다 제공하는 API 및 시스템 콜의 모양이 다르기 때문이다.
여기서, 잠시 다른 길로 새자면.. Java를 공부하다보면 Java의 장점 중 하나가 '이식성'이다.
사실 운영체제를 공부하기 전까지 크게 와닿지 않았는 데, 운영체제를 공부하다보니 왜 Java의 장점 중 하나가 '이식성'인 지 알 게 됬다.
포스팅을 읽어주셔서 감사합니다!
'컴퓨터구조와 운영체제' 카테고리의 다른 글
인터럽트가 발생한다면, CPU는 어떻게 처리할까?? (1) | 2023.09.14 |
---|---|
명령어 사이클을 통해 CPU 동작 원리 및 뼈대 잡기 (0) | 2023.09.10 |
컴퓨터 구조의 큰 그림을 그려보자 (2) | 2023.09.03 |
쓰레드란?? (0) | 2023.04.07 |
프로그램와 프로세스의 차이 (0) | 2023.03.17 |