1.1 운영체제

동동주·5일 전
0

기술면접 공부를 책으로 하면 더 몰입감 있게 할 수 있을 것 같아서 아예 책을 하나 샀다!
책 링크
아직은.. 종이가 좋다...


1.1.1 운영체제란

운영체제(OS, Operating System)란 컴퓨터 시스템의 자원을 관리하고, 사용자가컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다.

1.1.2 운영체제의 목적

하드웨어와 소프트웨어를 이어주는 계층으로써 한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결하는 것이 목적이다.

1.1.3 CPU와 메모리 구조

CPU(Central Processing Unit, 중앙 처리 장치)는 컴퓨터의 뇌 역할을 하며, 컴퓨터에서 프로그램을 실행하는 데 필요한 연산을 처리하고 수행한다. (다른 말로, 프로세서라고도 한다.)

메모리는 데이터를 저장하기 위한 기억장치로, 휘발성 메모리인 주 기억장치와 비휘발성 메모리인 보조 기억장치가 있다. 주 기억장치는 메인 메모리를 의미하며 일반적으로 RAM을 말한다. 보조 기억장치는 SSD, HDD(하드디스크) 등이 있다.

메모리의 계층 구조

접근 속도는 위로 갈수록 빠르다.
메모리의 계층구조

  • CPU (레지스터와 캐시 메모리는 CPU에 해당)
    • 레지스터: CPU가 필요한 데이터를 임시로 저장하는 기억장치. 접근 속도 빠름
    • 캐시 메모리: CPU와 RAM 사이의 속도 차이를 해결하기 위한 기억 장치
  • RAM: 휘발성 기억 장치, 보통 메모리라고 하면 RAM을 의미 (주 기억장치)
  • 하드 디스크: 비휘발성 장치 (보조 기억장치)

1.1.4 커널과 시스템 콜

커널은 OS의 핵심 요소로, 컴퓨터 하드웨어와 프로세스의 보안, 자원 관리, 하드웨어 추상화 같은 중요 역할 수행.

  • CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등을 담당

운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널 모드사용자 모드로 모드를 나눈다. 커널 모드에서는 하드웨어에 직접! 접근해 메모리, CPU와 같은 자원을 사용할 수 있다. 사용자 모드에서는 커널 모드의 자원에 접근할 수 없게 제한을 둔다.

사용자 모드에서 실행된 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야 함. 여기서 시스템 콜은 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수다. 커널은 시스템 콜로 받은 요청을 처리 후, 다시 시스템 콜로 결과 값을 반환한다.

  • 대표적인 예로는, 프로세스를 생성하는 fork(), 부모 프로세스가 자식 프로세스의 수행을 기다리는 wait()등이 있다.

시스템 콜에서 커널에 매개변수를 전달하는 방법은 3가지이다.
1. 매개변수를 CPU의 레지스터에 직접 전달하는 방식이다. 단, 이 방식은 매개변수의 개수가 레지스터의 개수보다 많은 경우에 문제가 될 수 있어 권장하지 않는다.
2. 매개변수를 메모리에 저장한 후 메모리의 주소 값을 레지스터에 저장하는 방식
3. 매개변수를 프로그램의 스택에 push하고 OS에서 pop해 매개변수를 전달하는 방식

3번에서 말한 스택은 어디에 있는가?

사용자 모드 스택에 존재한다. 3번의 과정을 더 상세히 보자면 다음과 같다.

  • 매개변수는 사용자 스택에 Push 됨
  • 시스템 콜이 실행되면서 커널이 사용자 스택에서 읽거나 커널 스택으로 복사하여 사용
  • 이후시스템 콜이 종료되면, 결과 값을 레지스터 또는 사용자 스택을 통해 반환

0개의 댓글