본문 바로가기

KNU Freshman/컴퓨터학개론

(6)-1 컴퓨터 구조와 운영체제

컴퓨터 구조와 운영체제
 
컴퓨터 구조
- 중앙처리장치 (CPU)
    1. ALU (산술논리연산장치)
    2. Control Unit (제어 장치)
    3. 레지스터
- 주기억장치 (메모리)
- 보조기억장치
- 입출력장치
 
* 위 모든 장치는 시스템 버스와 연결 (주소 버스, 데이터 버스, 제어 버스를 통해 통신함)
 

CPU 구조
- ALU: 연산/계산을 담당
- 레지스터: 임시 저장 장치로 프로그램에 실행하는데 필요한 값을 저장
- 제어장치: 컴퓨터의 각 부품들에 제어 신호를 보내고 명령어를 해석(메모리 읽기, 쓰기)

 
프로그램 실행 과정 

 
저장할 데이터: 데이터 버스
메모리 읽기/쓰기 신호: 제어 버스
저장할 주소: 주소 버스
 
IP(Instruction Register): 현재 실행할 명령을 저장
IR(Instruction Pointer): 다음에 실행될 명령의 주소 저장
 
명령어의 구조
- 번역된 프로그램은 어셈블리 혹은 기계어로 된 명령어 집합임
- 연산 코드(Op Code): 데이터 전송, 산술/논리 연산, 제어 흐름 변경, 입출력 제어 etc
 
- 피연산자(Operand, 연산 대상이 되는 데이터): 연산에 필요한 데이터 혹은 데이터가 저장된 위치
* Operand 필드 = 주소 필드
   피연산자는 0~3개가 있을 수 있음
 
Operand의 주소 지정 방식
- 즉시 주소 지정 방식: 연산에 필요한 데이터를 주소 필드에 직접 명시
 
- 직접 주소 지정 방식: 주소 필드에 유효한 주소를 명시하고, 해당 주소에는 데이터를 저장
(하지만 지정할 수 있는 주소의 범위가 제한됨)
 
- 간접 주소 지정 방식: 주소 필드에 유효한 주소를 저장하고, 해당 주소에서 다시 연산에 사용할 데이터의 주소를 찾아 가는 방식
 
- 레지스터 주소 지정 방식 (직접 주소 지정 방식과 유사)
- 레지스터 간접 주소 지정 방식 (간접 주소 지정 방식과 유사)
 

 
운영체제의 진화
- 한번에 하나의 프로그램만 실행
   - 하드웨어에 대한 완벽한 제어 권한을 가짐
   - 사용자는 컴퓨터 앞에서 직접 프로그램을 실행함
         * 단일 사용자, 단일 프로그램
        * 악의적인 사용자 x, 프로그램 간의 상호작용이 없으므로 프로그램이나 컴퓨터 시스템을 보호할 필요 x
- 단점: 비싸고, 자원 사용 효율성 낮음
 
* 멀티 프로그래밍의 발명
  - 다수의 프로그램을 메모리에 탑재 후 하나의 프로그램이 대기 중일때 다른 프로그램을 실행함
  - 최초의 멀티프로그래밍은 배치(Batch)시스템으로 시작하여 시분할(Time-sharing)시스템으로 발전

 

* 문제점: 여러 프로그램이 동시에 동작해서 운영체제는 프로그램끼리 보호하고, 운영체제 자체도 프로그램으로부터 보호해야함
 
* 배치시스템
 – 처리해야할 작업을 (Queue, 대기열)넣고 CPU계속 동작하게
 – 운영체제는 하나의 작업이 수행되는 다른작업을 메모리에 탑재함
 – 사용자는 작업처리를 요청하고 기다리면 운영체제가 작업수행 통보

 

시분할(Time-sharing) 운영체제

- 여러 사용자가 하나의 컴퓨터를 동시에 사용

  - 사용자의 요청에 빠르게 대응하여 응답성 향상

  - 컴퓨터 비용이 감소함에 따라 사용자의 시간이 더 중요해짐

 

운영체제의 정의

- 운영체제는 컴퓨터 하드웨어와 사용자 사이에서 중재 역할을 수행하는 프로그램의 일종

  - 사용자 프로그램을 실행하고, 관리 또한 컴퓨터 시스템(HW & SW)를 사용할 수 있는 기능 제공

  - 컴퓨터 시스템을 추상화하여 프로그램과 사용자에게 제공

 

운영체제의 역할

<심판(Referee)>

  - 사용자가 프로그램 사이에서의 자원 할당

  - 서로 다른 사용자 및 프로그램 간의 격리 및 보호

  - 사용자 및 프로그램 간의 통신

 

컴퓨터 시스템 자원을 사용하기 위한 방법

  – 방법1: 컴퓨터 시스템이(알아서) 직접 자원을 배분

  – 방법2: 사용자(프로그램)필요한 만큼의 자원을 요청

      • 사용자가 거짓말을 한다면?

      • 사용자가 필요한 자원을 미리 없다면?

방법3: 피드백(문답)통하여 필요한 자원을 알아내어 자원 배분

      • 정상적으로 자원을 많이 사용하는 경우와 악의적으로 많이 사용하는 경우는 어떻게 구분하는가?

          – : 핫딜로 사용자가 급격히 늘어난 경우 vs. DDoS 공격으로 트래픽이 늘어난 경우

 

<마술사(Illustionist)>

  - 컴퓨터 시스템의 자원이 무한한 것처럼 확장함

     * CPU, 메모리, 입출력 장치 등

 

운영체제는 자원에 대한 환상제공

- 프로그램은 자신만의 CPU, 메모리, 입출력장치 하드웨어를 가짐

- 유한한 자원을 무한한 것처럼 보이게

- 프로그램에서 사용하는 주소는 실제 메모리 주소와는 다름

 

<접착제(Glue)>

  - 새로운 HW & SW라도 컴퓨터에서 사용 가능하게 함

 

사용자 프로그램에 하위 요소에 대한 추상화 제공

   - 하드웨어에 대한 추상화

      •하드웨어에 대한 직접 제어가 아닌 표준화된 인터페이스를 통해 제어

      •프로그램과 하드웨어의 분리

           - 새로운 HW나오더라도 표준 인터페이스를 통해 기존 운영체제에서 사용할 있음

    - 운영체제에 대한 추상화

       •운영체제의 기능을 추상화하여 프로그램에 대한 이식성 향상

'KNU Freshman > 컴퓨터학개론' 카테고리의 다른 글

(7) 운영체제에서의 CPU 스케줄링  (1) 2024.04.15
(6)-2 운영체제의 주요 기능  (0) 2024.04.15
(5) 프로그램의 번역  (0) 2024.04.11
(4) 프로그램 구조  (0) 2024.04.11
(3) 프로그래밍 언어의 역사  (0) 2024.04.11