컴퓨터 시스템의 동작 원리 [운영체제 정보 기술의 원리 3-2장]

Sanghoon Han·2022년 1월 7일
0
post-thumbnail

7. 저장 장치의 구조

컴퓨터 시스템을 구성하는 저장장치는 주기억장치와 보조기억 장치로 나뉨

주기억장치

  • 보통 메모리라고 부르며 전원이 나가면 저장되었던 내용이 모두 사라져버리는 휘발성(volatile)의 RAM을 매체로 사용하는 경우가 대부분

보조기억장치

  • 전원이 나가도 저장된 내용을 기억할 수 있는 비휘발성(nonvolatile)의 마그네틱 디스크를 주로 사용

보조기억 장치 용도

파일 시스템(file system)용

  • 전원이 나가도 유지해야 할 정보가 있으면 그것을 파일 형태로 보조기억 장치에 저장

스왑 영역(swap are)

  • 메모리 크기가 한정되고 가격이 상대적으로 비싼데다가 용량이 적은 경우가 대부분
  • 다수의 프로그램이 메모리에 올라가 동시에 수행되는 현대의 컴퓨터 환경에서는 메모리 공간이 부족한 경우가 흔히 발생됨
  • 프로그램 수행 당장 필요한 부분만 메모리에 올려놓고 그렇지 않은 부분은 디스크 스왑 영역에 내려놓게 됨
  • 디스크에 내려놓는 것을 스왑 아웃(swap out)시킨다고 말함
  • 스왑 아웃된 부분이 필요할 때에는 다시 메모리 영역으로 올림
  • 원판, 암이 이동하며 원판에 데이터릉 릭고 씀,
  • 트랙, 섹터로 나뉨

8. 저장장치의 계층 구조

  • 빠른 저장장치, 느린 저장장치

빠른 저장장치

  • 레지스터
  • 캐시 메모리
  • 메인 메모리

느린 저장장치

  • 전원이 나가도 지워지지 않음
  • 비활성

캐싱 기법

  • 상대적으로 용량이 빠른 저장장치를 이용해 느린 저장장치의 성능을 향상시키는 총체적 기법을 일컫는다.
  • 상대적으로 느린 저장장치에 있는 내용 중 당장 사용되거나 빈번히 사용될 정보를 빠른 저장장치에 선별적으로 저장함
  • 두 저장장치 사이의 속도를 완충 시킴
  • 빠른 저장장치에 빈번히 사용될 정보를 저장하면 필요한 정보를 빠른 저장장치에서 곧바로 찾을 수 있는 경우가 많아져 전체적인 성능이 향상됨
  • 캐싱 기법이 적은 용량으로도 효과를 거둘 수 있는 것은 컴퓨터 내의 데이터나 프로그램을 구성하는 모든 부분이 균일하게 사용되는 것이 아니라 일부분만이 집중적으로 사용되고 특정 부분은 거의 사용 되지 않기 때문

9. 하드웨어의 보안

  • 다중 프로그래밍(여러 개의 프로그램이 메모리 위에 올라가있음) 환경에서 동작함
  • 각 프로그램이 다른 프로그램의 실행을 방해하거나 프로그램 간에 충돌을 일으키는 무넺를 막기 위해 하드웨어에 대한 각종 보안 기법이 필요함
  • 하드웨어적인 보안을 유지하기 위해 운영체제는 기본적으로 커널모드와 사용자 모드의 두 가지 모드를 지원함

커널 모드

  • 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행 하는 모드
  • 모드빗 0
  • 시스템에 중요한 영향을 미치는 연산은 커널모드에서 만 실행 가능하도록 함으로써 하드웨어의 보안을 유지

사용자 모드

  • 일반 사용자 프로그램이 실행됨
  • 제한적인 명령만을 수행할 수 있다.

사용자 프로그램이 프로그램 내에서 그런 종류의 연산을 수행 해버리면 제어가 아무런 소용이 없게됨 사용자 프로그램이 cpu를 가지고 있는 동안 에는 운영체제가 자신의 코드를 실행하지 못하므로 사용자 프로그램을 감시할 방법이 없음

💡 이를 방지 하기 위해 하드웨어적인 지원이 필요함

모드비트(mode bit)

  • 사용자 프로그램을 감시함
  • 모드비트가 0으로 세팅되어 있으면 커널모드로서 모든 명령을 수행 가능
  • 1이면 사용자 모드, 제한된 명령만 수행
  • 운영체제가 cpu를 점유해 자신의 코드를 수행하다가 사용자 프로그램에게 cpu의 제어권을 넘길 때 모드비트를 1로 세팅해 넘기게 됨
  • 보안과 관련된 중요한 명령의 수행에 제약을 받기게 되기 때문에 하드웨어를 보호할 수 있다.

사용자 프로그램이 입출력을 하고 싶으면 시스템 콜로 운영체제에 요청을 해야함

운영체제는 입출력 요청이 올바른 요청인지 확인한 후 입출력을 실행하기 때문에 파일에 대한 보안을 유지할 수 있다.

요청된 입출력이 완료되면 cpu의 제어권을 다시 사용자 프로그램에게 넘길 수 있게 되며, 사용자 프로그램이 다시 cpu를 할당 받으면 시스템 콜 이후의 명령을 수행할 수 있게 된다.

10. 메모리 보안

디스크뿐 아니라 메모리의 경우에도 보안이 필요!

이유

여러 프로그램이 메모리에 동시에 올라가서 실해오디기 때문에 하나의 사용자 프로그램이 다른 사용자 프로그램이나 운영체제가 위치한 메모리 영역을 침범할 수 있기 때문

예시

하나의 사용자 프로그램이 C 언어츼 포인터 등 메모리 주소 참조 연산을 잘못 사용해 다른 사용자 프로그램의 메모리 영역이나 운영체제 커널이 위치한 영역을 참조하려는 시도함

적어도 인터럽트 벡터와 인터럽트 처리루틴이 있는 곳은 각별한 보안이 필요함

2개의 레지스터를 사용해 프로그램이 접근하려는 메모리 부분이 합법적인지 체크함

기준 레지스터(base register)

  • 어떤 프로그램이 수행되는 동안 그 프로그램이 합법적으로 접근할 수 있는 메모리상의 가장 작은 주소를 보관하고 있음

한계 레지스터(limit register)

  • 그 프로그램이 기준 레지스터값부터 접근할 수 잇는 메모리의 범위를 보관하고 있음

메모리 접근 연산이 있을 때마다 하드웨어적으로 현재 접근하려는 위치가 합법적인 범위에 있는지 체크하게 됨

기준 레지스터에 있는 주소부터

기준 레지스터 + 한계 레지스터값 사이의 주소 영역에만

접근할 수 잇음

주소가 이 범위 안에 없으면 불법저깅ㄴ 메모리 접근이므로 예외상황 콜함

예외상황

  • 운영체제에 소프트웨어 인터럽트를 발생시켜 cpu의 제어권을 해당 프로그램으로 부터 운영체제로 이양시키고 운영체제는 예외상황을 발생시킨 프로그램을 강제로 종료시킴

단 여기에서 살펴본 기준 레지스터와 한계 레지스터를 통한 메모리 보호 기법은 하나의 프로그램이 메모리의 한 영역에 연속적으로 위치하는 단순화 된 메모리 관리 기법을 사용하는 경우에 한정된 설명이다.

11. CPU 보호

  • 특정 프로그램이 cpu를 독점해 무한 반복문을 수행하는 등 부적절한 방법으로 cpu의 사용 권한을 독점하는 것을 막기ㅜ이해

타이머

  • 타이머에 의해 발생되는 인터럽트 처리루틴의 역할은 지금 cpu를 점유하고 명령ㅇ르 실행 중인 프로그램으로부터 cpu를 빼앗아 다른 프로그램에게 cpu를 이양하는 것 이다.
  • 타이머는 시분할 시스템에서 현재 시간을 계산하기 위해서도 사용됨.

12.시스템 콜을 이용한 입출력 수행

💡 사용자 프로그램이 디스크의 파일에 데이터를 쓰거나 디스크의 파일로 부터 데이터를 읽어오는 행위, 키보드로부터 입력을 받거나 수행 결과를 화면에 출력하는 행위 모두 특권명령인 입출력 명령에 해당됨 못해!

  • 사용자 프로그램은 직접 입출력을 수행하는 대신 운영체제에게 시스템 콜이라는 서비스 대행 요청을 하여 입출력을 수행한다
  • 시스템 콜은 일종의 소프트웨어적인 인터럽트로서 사용자 프로그램이 시스템 콜을 할 경우 트랩이 발생해 cpu의 제어권이 운영체제로 넘어가게됨
  • 운영체제는 해당 시스템 콜을 처리하기 위한 루틴으로 가서 정의된 명령을 수행함
  • 시스템 콜이 디스크 입출력 요청이었으면 디스크 컨트롤러에게 입출력 요청을 수행하도록 명령함
  • 다시 cpu를 할당받을 수 있도록 한다.

Reference

반효경, 운영체제와정보기술의원리, 이화여자대학교출판문화원, 2020.05.04, p82~94

profile
Fail Fast learn Faster

0개의 댓글