본 글은 기술 면접 대비 CS 전공 핵심요약집 (길벗) 을 기반으로 정리한 내용입니다.
하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층
OS는 하드웨어와 소프트웨어를 이어주는 계층으로써 한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결하는 것이 목적이다.
CPU는 컴퓨터에서 프로그램을 실행하는 데 필요한 연산을 처리하고 수행한다. 다른 말로는 프로세서(processor) 라고도 한다. 레지스터와 캐시 메모리는 CPU 내부에 위치하는 기억장치다.
메모리는 데이터를 저장하기 위한 기억장치로 휘발성인 주 기억장치와 비휘발성인 보조기억장치가 있다. 주 기억장치는 메인 메모리를 의미하며 일반적으로 RAM을 가리킨다.
프로그램을 실행하면 OS가 디스크에 있는 프로그램을 메모리로 로드(load)한다. 메모리에 로드한 프로그램을 프로세스(process)라고 하며, CPU가 처리한다. CPU는 하나의 프로세스만 처리할 수 있어서 멀티 프로세스 환경에서는 OS가 스케줄링을 통해 CPU에 프로세스를 할당한다.
While a kernel is a critical piece, it is NOT the same as an operating system. An engine is the essential "core" of a car, but you can't drive an engine on its own.
쉘 (shell)
사용자와 운영 체제 간의 인터페이스 역할을 하는 사용자가 명령어를 입력하고 실행할 수 있게 해주는 명령어 해석기이다.
쉘은 사용자가 입력한 명령어를 해석하고, 해당 명령어를 실행하기 위해 커널과 상호작용한다. 쉘을 통해 사용자는 커널의 기능을 활용하여 운영 체제를 제어하고 작업을 수행할 수 있다.
시스템 콜은 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수이다. (예. fork()
, wait()
)
운영 체제는 커널 모드와 사용자 모드로 나뉜다. 사용자 모드에서는 커널 모드의 자원에 접근할 수 없게 제한을 둔다. 사용자 모드에서 실행된 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야 한다.