기술면접 공부를 책으로 하면 더 몰입감 있게 할 수 있을 것 같아서 아예 책을 하나 샀다!
책 링크
아직은.. 종이가 좋다...
운영체제(OS, Operating System)란 컴퓨터 시스템의 자원을 관리하고, 사용자가컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다.
하드웨어와 소프트웨어를 이어주는 계층으로써 한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결하는 것이 목적이다.
CPU(Central Processing Unit, 중앙 처리 장치)는 컴퓨터의 뇌
역할을 하며, 컴퓨터에서 프로그램을 실행하는 데 필요한 연산을 처리하고 수행한다. (다른 말로, 프로세서라고도 한다.)
메모리는 데이터를 저장하기 위한 기억장치로, 휘발성 메모리인 주 기억장치와 비휘발성 메모리인 보조 기억장치가 있다. 주 기억장치는 메인 메모리를 의미하며 일반적으로 RAM을 말한다. 보조 기억장치는 SSD, HDD(하드디스크) 등이 있다.
접근 속도는 위로 갈수록 빠르다.
레지스터
: CPU가 필요한 데이터를 임시로 저장하는 기억장치. 접근 속도 빠름캐시 메모리
: CPU와 RAM 사이의 속도 차이를 해결하기 위한 기억 장치RAM
: 휘발성 기억 장치, 보통 메모리라고 하면 RAM을 의미 (주 기억장치)하드 디스크
: 비휘발성 장치 (보조 기억장치)커널은 OS의 핵심 요소로, 컴퓨터 하드웨어와 프로세스의 보안, 자원 관리, 하드웨어 추상화 같은 중요 역할 수행.
운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널 모드
와 사용자 모드
로 모드를 나눈다. 커널 모드에서는 하드웨어에 직접! 접근해 메모리, CPU와 같은 자원을 사용할 수 있다. 사용자 모드에서는 커널 모드의 자원에 접근할 수 없게 제한을 둔다.
사용자 모드에서 실행된 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야 함. 여기서 시스템 콜은 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수다. 커널은 시스템 콜로 받은 요청을 처리 후, 다시 시스템 콜로 결과 값을 반환한다.
시스템 콜에서 커널에 매개변수를 전달하는 방법은 3가지이다.
1. 매개변수를 CPU의 레지스터에 직접 전달하는 방식이다. 단, 이 방식은 매개변수의 개수가 레지스터의 개수보다 많은 경우에 문제가 될 수 있어 권장하지 않는다.
2. 매개변수를 메모리에 저장한 후 메모리의 주소 값을 레지스터에 저장하는 방식
3. 매개변수를 프로그램의 스택에 push하고 OS에서 pop해 매개변수를 전달하는 방식
사용자 모드 스택에 존재한다. 3번의 과정을 더 상세히 보자면 다음과 같다.