공룡책(Operating System Concepts)과 패스트캠퍼스 강의를 참고하였습니다.
개인적인 공부용으로 작성한 글이기 때문에 틀린 내용이 있을수도 있습니다. 틀린 내용을 발견하신다면 언제든지 지적해주세요.
컴퓨터 시스템은 다음과 같이 4개의 주요한 부분들로 나누어 볼 수 있다.
User <-> Application Program <-> OS <-> Hardware
이 시리즈에서는 이 중 OS에 대해 자세히 다뤄볼 예정이다.
운영체제란 무엇일까?
"Everything a vendor ships when you order an operating system." ㅋㅋㅋ
우리가 늘 사용하는 Windows OS, Mac OS, UNIX, LINUX 등이 대표적인 OS들이다.
'운영체제'라는 것에 대해 아주 정확한 정의가 존재하는 것은 아니다.
일반적으로 운영체제라고 불리는 부분은 커널을 중심으로 시스템 프로그램들을 사용하여 어플리케이션 프로그램 또는 다른 시스템 프로그램과 하드웨어 사이의 통신을 담당하는 부분이다.
이 외에도 약간의 차이가 있는 여러가지 정의가 존재하며, 상황에 따라 조금씩 다르게 정의할 수 있다.
그러나 이 시리즈에서는 위의 정의에 따른 OS에 대해 설명할 예정이다.
OS에는 여러 가지 기능들이 있다.
그 중 가장 중요한 기능은 시스템 자원 관리자로서의 기능이다.
컴퓨터에는 여러 가지 시스템 자원들이 있다.
CPU, Memory(DRAM, RAM),I/O Devices(입출력장치. 키보드, 마우스, 모니터 ...), 저장매체(SSD, HDD) 등이 그것이다.
OS는 이런 모든 시스템 자원들을 관리하는 기능을 한다.(resource allocator)
어떤 프로세스가 실행될 때 CPU를 얼마나 점유하게 할 지, 메모리를 얼마나 확보하고 언제 돌려줄지 등을 OS가 결정한다.
여러 시스템 자원 요청 사이에서 충돌이 발생했을 때, 어떤 것이 더 효율적일지를 결정하는 것도 OS의 역할이다.
이 외에도 운영체제는 사용자와 하드웨어 간의 커뮤니케이션, 컴퓨터 하드웨어/프로그램 실행 제어, 프로그램 실행 시의 에러/잘못된 사용을 방지하는 역할을 한다.
다음 게시글에서는 OS구조에 대해 설명할 예정이다.