Skip to content

OS 유노코딩 {ozcoding}

README#

본 문서는 오즈코딩스쿨 초격차 백엔드 3기 2024-07-04 ~ 2024-07-10 사이에 진행된 운영체제 시간때 들어올 질문들에 대응하기 위해 나도 같이 영상을 보고 학습하기 위하여 만들어졌습니다.

운영체제와 컴퓨터 하드웨어#

1. CPU의 구성요소 ALU, CU, 그리고 레지스터 각각의 역할을 간략하게 정리해보자.#

  • ALU (Arithmetic Logic Unit):
  • 역할: 산술 및 논리 연산을 수행하는 유닛입니다. 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산과 AND, OR, NOT과 같은 논리 연산을 처리합니다.

  • CU (Control Unit):

  • 역할: 컴퓨터의 모든 구성 요소들의 동작을 제어하고 조정합니다. ==명령어를 해독==하여 ALU와 레지스터 등 다른 구성 요소에게 어떤 작업을 수행할지 지시합니다.
  • 실행파일에 들어있는 명령어셋을 이해하고 ALU, Register, Memory 등등을 활용한다.

  • 레지스터 (Registers):

  • 역할: CPU 내부에서 데이터를 임시로 저장하는 고속 메모리입니다. 연산 중간값, 명령어 주소 등을 저장하며, 처리 속도를 높이기 위해 사용됩니다.

2. 메인 메모리와 보조기억장치의 차이를 간략하게 서술해보자.#

  • 메인 메모리 (Main Memory, RAM):
  • 특징: 컴퓨터가 실행 중인 프로그램과 데이터를 저장하는 임시 저장소입니다. 휘발성 메모리로, 전원이 꺼지면 저장된 데이터가 사라집니다. 속도가 빠르지만 저장 용량이 제한적입니다.
  • 파일에 저장되어 있던 바이너리 코드가 로더에 의해 메인 메모리로 탑재가 되면 프로그램은 비로소 프로세스가 된다.

  • 보조기억장치 (Secondary Storage):

  • 특징: 데이터와 프로그램을 영구적으로 저장하는 장치입니다. 비휘발성 메모리로, 전원이 꺼져도 데이터가 유지됩니다. 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), USB 드라이브 등이 포함됩니다. 속도는 느리지만 저장 용량이 큽니다.

3. 버스 시스템은 데이터를 주고받기 위한 경로로, 데이터의 종류에 따라 세 가지로 구분할 수 있다. 세 가지는 무엇인지 말해보자.#

  • 데이터 버스 (Data Bus):
  • 역할: CPU와 메모리 또는 입출력 장치 간에 데이터를 주고받는 통로입니다. 양방향으로 데이터 전송이 이루어집니다.

  • 주소 버스 (Address Bus):

  • 역할: CPU가 메모리나 입출력 장치의 특정 위치를 지정할 때 사용되는 경로입니다. 일방향으로 주소 정보를 전송합니다.

  • 제어 버스 (Control Bus):

  • 역할: CPU가 다른 구성 요소들과의 동작을 제어하기 위해 사용하는 경로입니다. 읽기/쓰기 신호, 인터럽트 신호, 클럭 신호 등 다양한 제어 신호를 전달합니다.

주요 레지스터 설명#

1. 프로그램 카운터 (Program Counter, PC)

  • 역할: 다음에 실행될 명령어의 메모리 주소를 저장합니다. CPU는 PC에 저장된 주소를 참조하여 메모리에서 명령어를 가져와 실행합니다.
  • 동작: 명령어 실행이 완료될 때마다 PC 값은 자동으로 증가하여 다음 명령어를 가리키도록 합니다. 분기 명령어 실행 시에는 PC 값이 변경되어 분기 목적지 주소를 가리키게 됩니다.

2. 인스트럭션 레지스터 (Instruction Register, IR)

  • 역할: 현재 실행 중인 명령어를 저장합니다. CPU는 IR에 저장된 명령어를 해석하여 해당 명령어에 맞는 동작을 수행합니다.
  • 동작: CPU는 메모리에서 가져온 명령어를 IR에 저장한 후, IR에 저장된 명령어를 해독하고 실행합니다.

3. 어드레스 레지스터 (Address Register, AR)

  • 역할: 메모리에서 데이터를 읽거나 쓸 때 사용할 메모리 주소를 저장합니다.
  • 동작: CPU는 AR에 저장된 주소를 사용하여 메모리에 접근하고, 데이터를 읽거나 씁니다.

4. 버퍼 레지스터 (Buffer Register, BR)

  • 역할: CPU와 메모리, 입출력 장치 사이에서 데이터를 임시로 저장하는 역할을 합니다. 데이터 전송 속도 차이를 완화하고 데이터 손실을 방지합니다.
  • 동작: CPU는 BR을 통해 메모리나 입출력 장치에서 데이터를 읽어오거나, 데이터를 저장할 때 사용합니다.

5. 플래그 레지스터 (Flag Register, FR)

  • 역할: 연산 결과나 시스템의 상태 정보를 나타내는 플래그들을 저장합니다. 예를 들어, 연산 결과가 0인지, 음수인지, 오버플로우가 발생했는지 등의 정보를 저장합니다.
  • 동작: CPU는 연산 결과에 따라 플래그 레지스터의 값을 변경하며, 조건 분기 명령 등에서 플래그 값을 참조하여 프로그램의 흐름을 제어합니다.

6. 스택 포인터 (Stack Pointer, SP)

  • 역할: 스택의 맨 위(top) 주소를 저장합니다. 스택은 함수 호출, 지역 변수 저장 등에 사용되는 자료 구조입니다.
  • 동작: 데이터를 스택에 저장(push)할 때 SP 값은 감소하고, 스택에서 데이터를 읽어올(pop) 때 SP 값은 증가합니다. SP는 항상 스택에서 사용 가능한 다음 메모리 위치를 가리킵니다.