본문 바로가기
Computer Science/Operating System

[운영체제OS]3. 컴퓨터 시스템 동작 원리-2(저장장치, 하드웨어, 보안)

by ggyongi 2021. 2. 22.
반응형

********************************

##이 글은 제가 공부하고 있는 책을 요약해놓은 것이므로 본문 내용만 봐선 이해가 어려울 수 있습니다.

 

목차

7. 저장장치 구조

8. 저장장치의 계층 구조

9. 하드웨어의 보안

10. 메모리 보안

11. CPU 보호

********************************

 

7. 저장장치 구조

저장장치 : 주기억장치/보조기억장치

주기억장치: 메모리라고 부르며 휘발성의 RAM을 주로 사용

보조기억장치: 비휘발성의 마그네틱 디스크를 주로 사용 / 플래시메모리, CD, 마그네틱 테이프 등도 사용됨

 

보조기억장치의 용도: 파일 시스템용/ 스왑영역(swap area)용

파일 시스템용: 전원이 나가도 유지해야할 정보를 파일 형태로 저장

스왑영역용: 메모리 공간이 부족한 경우 운영체제는 프로그램시행에 당장 쓰지않는 부분을 디스크의 스왑영역에 내려놓음. 즉 메모리의 연장 공간이라 할수 있음. 디스크에 내려놓는 일을 스왑 아웃(swap out)시킨다고 말함. 하드디스크가 가장 널리 사용.

 

하드디스크 - 여러 개의 마그네틱 원판이 존재. 암(arm)이 이동하며 원판에 데이터를 읽고 쓰는방식. 원판의 표면은 트랙으로 나뉘고 각 트랙은 섹터로 나뉜다. 섹터에 최소 단위 정보가 저장되어 있음.

 

8. 저장장치의 계층 구조

저장장치는 느린~빠른 순의 단계적 계층구조로 이루어짐. 빠른 저장장치는 공간당 가격 높아서 적은 용량을 사용. 느린 저장장치는 저렴해 대용량인 반면 접근 속도가 느림. 레지스터(cpu내부에 존재)-캐시메모리-메인메모리-마그네틱디스크-광디스크-마그네틱 테이프 순으로 빠르다. 캐시메모리와 메인메모리는 휘발성. 

빠른 저장장치는 용량이 작지만 필요한 정보만 선별 저장하는 방식으로 하위에 있는 용량이 큰 저장장치가 갖고 있는 성능과 비슷한 효과를 낼 수 있다. 예를 들어 여러가지 캐싱 기법으로 캐싱메모리는 메인메모리의 성능을 낼 수 있음. 

 

9. 하드웨어의 보안

다중 프로그래밍 환경에서 프로그램 간 충돌을 막기 위한 보안 기법이 필요. 하드웨어적 보안 유지를 위해 운영체제는 기본적으로 커널모드(kernel mode)와 사용자모드(user mode)를 지원한다. 중요한 정보에 접근해 위험상황을 초래할 수 있는 연산은 커널모드에서만 실행될 수 있게 함. 

커널모드 - 운영체제가 CPU제어권을 갖고 운영체제 코드를 실행하는 모드. 모든 종류의 명령 실행가능.

사용자모드 - 일반 프로그램이 실행되며 제한적 명령만 수행가능.

그러나 사용자 프로그램이 프로그램 내에서 그런 종류의 연산을 수행해버리면 제어가 아무 소용없게됨. 사용자프로그램이 CPU를 가지고 있는 동안은 운영체제가 자신의 코드를 실행하지 못하므로 사용자프로그램을 감시할 방법이 없기 때문. 그래서 컴퓨터시스템은 CPU내부에 모드비트(mode bit)를 두어 사용자프로그램을 감시. 

 

모드비트 - 모드비트가 0이면 커널모드, 1이면 사용자모드. CPU는 보안관련 명령 수행전 항상 모드비트를 조사해 0일 경우에만 그 명령을 실행하게됨. 사용자프로그램이 보안이 필요한 명령을 수행할 때는 시스템 콜을 통해 운영체제가 대신 해줄것을 요청. 그럼 CPU제어권은 운영체제로 넘어간다. 인터럽트가 발생할 때 모드비트는 자동으로 0이 세팅되므로 운영체제는 모든 종류의 명령을 다 수행하게 됨. 작업이 끝난 후엔 모드비트를 다시 1로 만든후 사용자프로그램에 CPU를 다시 넘겨줌. 이와 같이 시스템의 보안과 관련된 명령들을 특권명령이라 한다. 모든 입출력명령은 특권명령!(다른 디스크에 함부로 접근하면 안되니까)

 

10. 메모리 보안

메모리 역시 서로 침범을 방지하기 위해 보안이 필요. C언어 작성중 메모리 주소 참조연산을 잘못 사용해 다른 프로그램 메모리나 운영체제 커널이 위치한 영역을 참조하려는 시도가 발생할 수 있음. 2개의 레지스터를 사용해서 프로그램이 접근하려는 메모리 부분이 합법적인지 체크.

기준레지스터 - 프로그램 실행중 그 프로그램이 합법적으로 접근할 수 있는 메모리 상의 가장 작은 주소를 보관

한계레지스터 - 기준레지스터값부터 접근할 수 있는 메모리의 범위를 보관.

즉 시작주소와 프로그램 길이를 각각 저장하고 있음. 이를 통해 합법적 범위인지를 체크. 접근하려는 주소가 이 범위를 벗어나면 불법적인 메모리 접근이므로 예외사항이라는 소프트웨어인터럽트가 발생됨. CPU제어권이 운영체제로 넘어가 해당 프로그램을 강제 종료시킴.

* 이 방법은 메모리가 단순히 한 영역에 연속적으로 위치되어있는 경우를 말하는데 메모리 관리 기법에서는 하나의 프로그램이 여러 영역에 나뉘어 위치하는 페이징 기법도 있다.(추후 내용다룸)

* 메모리 접근 연산은 특권명령이 아니다. 다만 사용자프로그램이 메모리에 접근하기 전에 하드웨어적으로 그 접근이 합법인지를 체크. 이것이 운영체제만이 수행할 수 있는 입출력 연산(특권명령)과의 차이점.

* 기준레지스터와 한계레지스터 값은 임의로 바꾸면 안되므로 이 값을 세팅하는 연산은 특권명령. 따라서 운영체제가 직접 이 값들을 세팅해주고 사용자프로그램은 이를 변경할 수 없음.

 

11. CPU 보호

특정 프로그램이 CPU를 무한 독점하는 것을 막기위해 운영체제는 타이머(timer)라는 하드웨어를 사용. 타이머는 정해진 시간이 지나면 인터럽트를 발생시켜 운영체제가 CPU제어권을  획득할 수 있도록하는 역할을 수행. 타이머 값을 세팅하는 명령을 로드타이머라고 하며 이는 특권명령. 타이머는 매 클럭 턱마다 1씩 감소하며 0이 되는 순간 인터럽트 발생.

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글