Chapter0 운영체제를 배우기 전에...

Jake Yeon·2021년 1월 4일
0

OperatingSystem

목록 보기
1/3
post-thumbnail

본격적으로 운영체제(OS)에 대해서 다루기 전에 미리 알아두면 좋은 개념들에 대해서 포스팅 해볼 예정이다.

운영체제란 무엇인가?

운영체제(OS)는 Operating System의 약어이며 컴퓨터의 하드웨어를 제어하고 응용 소프트웨어를 위한 기반 환경을 제공하여, 사용자가 컴퓨터를 사용할 수 있도록 중재 역할을 해 주는 소프트웨어를 말합니다. 네이버 지식백과

사전적인 의미는 다음과 같다고 한다.
다음 포스팅에서 제대로 알아볼 예정이니 이번 포스팅에서는 느낌만 알고 넘어가도록하자.

10가지 개념

앞으로 포스팅 할 운영체제 내용에 있어서 기본적으로 숙지하고 있어야 하는 10가지 개념들에 대해서 알아보자.

  1. 컴퓨터 시스템은 CPU, Memories, I/O Device(HDD) + Bus로 구성되어 있다.
    (위의 그림에서 CPU와 Main Memory를 제외한 모든 것은 device라고 생각하면 된다.)
  1. CPU와 Main Memory를 제외한 모든 것은 주변 장치(external devices)이다.
    특히 HDD(Hard Disk Drive)는 내부 장치라고 오해하기 쉽지만 이는 주변 장치이다.
  1. 저장 공간은 2개의 카테고리로 분류 된다.
  • 내부기억장치(internal storages) 는 registers, caches, Main Memory를 뜻하며 휘발성(volatile) 메모리이다. 이들은 편의상 Memories라고 부른다.
  • 외부기억장치(external storages) 는 HDD나 SSD를 뜻하며 비휘발성(non-volatile), 즉 영구적인 메모리이다.
  1. 기본적으로 모든 파일들은 HDD나 SSD에 저장된다.
    (앞으로의 언급에서 HDD를 모든 영구적인 메모리를 대표하는 것으로 가정한다)
  1. 모든 프로그램들은 CPU에 의해서 실행되려면 반드시 Main Memory로 'load' 되어야만 한다. Load프로그램을 실행시키기 위해서 기억장치로부터 파일을 가져오는 것을 의미한다.
    Store파일들을 기억장치로 옮겨 저장하는 것을 의미한다.
  1. Main Memory는 Illinois Architecture의 memory를 말하는 것이다.
    Main Memory에는 2가지 구조가 있다.
    Illinois Architecture : 1개의 memory
    Harvard Architecture : 2개의 memory (명령어 메모리 + 데이터 메모리)
  1. ❗️ 모든 내부 활동(internal activities)은 CPU에 의해 내부기억장치(internal storages)를 사용하여 수행되는 것이다.
    컴퓨터 시스템 내에서의 활동이 있다면, 반드시 CPU에 의해서 수행되어지는 프로그램들이 존재한다는 것이다.
  1. ❗️ 사용자 프로그램(user programs)이 아닌 모든 프로그램들은 OS 프로그램들이다.
    여기서 사용자 프로그램이란 내가 작성한 프로그램인(브라우저, 컴파일러, 에디터 등)이라고 할 수 있다.
    OS Program의 예시는 워드 파일을 하드에 저장하기 위해 ctrl + s 를 누르는 것은 내가 작성한 프로그램이 아니라 이미 작성된 프로그램을 실행만 시키는 것이기 때문에 OS Program이라고 할 수 있다.
  1. ❗️ 운영체제는 스케줄링(Scheduling), 자원 관리(Resource Management), 프로그램 제어(Control Programs)를 수행한다.
    물리적인 자원 종류 : CPU, Memories, I/O Device, Bus etc
    논리적인 자원 종류 : Time, Files etc
  1. 운영체제의 목적은 사용자 편의(User Convenience)와 시스템의 효율성(System Efficiency)이다.

CPU 레지스터

CPU(Central Processing Unit)의 특수한 목적을 가진 레지스터들에 대한 설명이다.
주로 컴퓨터 구성에서 다루지만 알고 있으면 앞으로의 포스팅에서 도움이 될 것 같아서 살짝 포스팅해본다.
각각의 레지스터들의 역할을 구분할 줄 알면 이해에 도움이 될 것이다.
위의 그림은 일반적인 CPU의 레지스터들과 메모리를 나타낸 그림이다.

CPU 구성

CPU는 데이터 유닛(Data Unit)제어 유닛(Control Unit)으로 구성되어있다.

데이터 유닛(Data Unit)

위의 그림이 데이터 유닛(Data Unit)이며 위에서 다뤘던 CPU register들과 ALU(Arithmetic and Logic Unit)로 구성되어있다.
데이터 유닛이 작동하는 예를 들어 보면 PC에서 AR로 data를 보내고 싶다면 MUX for BUS의 selection line인 S0 S1 S2를 010(2진수로 2를 의미 = PC)으로 설정하고 AR의 LD만 1로 설정하고 나머지 register들의 LD를 0으로 설정하면 AR ← PC, 즉 PC의 data가 AR로 보내지는 명령이 수행되는 것이다.

제어 유닛(Control Unit)

제어 유닛(Control Unit) 의 주 업무는 명령어 해독(decode), 명령어 패치(fetch), 실행 흐름 제어 정도이다.
즉, data들이 어떻게 이동하게 할지 각각의 CPU 구성요소들에게 어떠한 동작을 할지 IR에 보관되어 있는 명령어(OPCODE)를 판독해 신호를 주는 것이다.

따라서 제어 유닛은 진정한 의미의 두뇌 라고 할 수 있다.

명령어 집합 구조(ISA: Instruction Set Architecture)

명령어 집합 구조(ISA)는 모든 CPU에서 지시를 하는 방법을 의미한다.
아래의 그림처럼 총 3가지 방법이 존재한다. 기억 장치 참조 명령(Memory Reference Instruction)memory를 참조하여 명령을 지시하는 방법이다.
기억 장치 참조 명령의 경우 CPU를 설계할 때 있어서 가장 중요한 그림이라 할 만큼 중요하다.

여기서 OpCode는 000 ~ 110까지만 있는 것을 확인할 수 있는데 그 이유는 다음과 같다.
제어 유닛 그림에서 IR이 [ I | Opcode | Address ]로 구성된 것을 확인할 수 있는데, OpCode가 111인 경우에는 I가 0인 경우와 1인 경우에 따라서 하는 지시가 다르기 때문이다.

OpCode = 111 and I = 0 : memory는 참조하지 않으며 Register Operation을 따른다.
OpCode = 111 and I = 1 : memory는 참조하지 않으며 I/O Operation을 따른다.

기억 장치 참조 명령의 종류는 다음과 같다.

AND, ADD, LDA, STA, BUN, BSA, ISZ 가 존재한다.
I = 0 : 직접 주소 지정 명령(Direct Addressing instruction)에 의해 메모리 지정
I = 1 : 간접 주소 지정 명령(Indirect Addressing instruction)에 의해 메모리 지정
(이때 7xxx 나 Fxxx는 존재하지 않는데 왜냐하면 Opcode 111은 메모리를 참조하지 않기 때문이다.)

CPU가 하는 일

그렇다면 CPU가 실제로 수행하는 일은 무엇일까?

CPU는 오로지 아래의 Instruction Cycle의 1 - 6 번까지의 과정만을 반복 수행하는 것이다.

CPU Instruction Cycle

  1. Instruction Fetch (메모리에 있는 명령어를 IR로 데려오는 것)
    메모리에 있는 명령어를 IR로 가져오기 위해서는 AR은 Memory로 address를 전달할 수 있지만 PC는 Memory로 address를 바로 전달할 수 없으므로 먼저 AR ← PC를 수행한다. 그러고 나서 AR에 있는 address를 Memory로 전달하여 IR로 옮겨주는 IR ← M[AR]을 수행한다.
    이때 BUS는 한 번에 한 가지의 전류, 즉 한 가지의 정보만을 보내주므로 두 개의 명령이 동시에 수행 불가능하다. 따라서 PC ← PC + 1을 해준다.
  1. Decode (Opcode를 분석하는 과정)
    I ← IR(15 = I), D0.... D7 ← Decode IR(12-14 = Opcode), AR ← IR(0-11 = Address)
    이때 3가지가 동시에 수행이 가능하므로 PC가 증가하지 않고 한 번에 수행이 된다.
  1. Decide Effective Address
    I 와 D7의 값에 따라서 위와 같이 4가지 종류가 발생할 수 있다.
    D7=0 and I=0 : 직접 주소 지정으로 address 자체가 effective address
    D7=0 and I=1 : 간접 주소 지정으로 한 번 더 계산을 하여 effective address를 확인
    D7=1 and I=0 : Register - reference instruction 실행
    D7=1 and I=1 : I/O instruction 실행
  1. Data Fetch, if necessary
    (IO나 Register Instruction는 memory를 참조하지 않으므로 4번 과정 필요 X)
  1. Execute
    (명령 수행)
  1. Store Data, if necessary
    (만약 AC로부터 결과 데이터를 타깃 메모리에 저장해야 하는 경우만)

위의 과정을 그림으로 나타낸 것이 바로 위의 그림이다.

결론

이번 포스팅에서는 운영체제의 사전적인 의미, 10가지 개념, CPU에 대해서 간략하게 알아보았다.
다음 포스팅에서는 본격적으로 운영체제에 대해서 알아보도록 하겠다.
👉🏻 다음포스팅으로 이동하려면 여기로

참고

  1. Operating System Concepts 9th Edition
profile
Hope to become an iOS Developer

1개의 댓글

comment-user-thumbnail
2021년 1월 5일

퍼가요~ㅋㅋㅋㅋㅋㅋㅋㅋ

답글 달기