Keep going
운영체제 동작 본문
운영체제 역사와 관련 있다.
인터럽트 처리하는 방식으로 운영체제가 동작하는 방식들
-
첫 운영체제
- 주기억 장치에 프로그램 한개를 집어 넣고 실행, 이 작업이 끝나면 다음 프로그램을 실어서 작업
- 만약 이 프로그램이 I/O를 해야한다면 I/O를 하는 동안에 CPU는 I/O가 끝날때까지 기다린다.
- CPU는 아무일도 안하고 기다리는 시간이 너무 길어진다.(문제점)
-
멀티 프로그래밍(Batch System)
- 메인 메모리에 작업을 여러개 갖다 둔다.
- 작업 1을 프로그램 실행하다 I/O를 해서 기다려야 한다면 CPU는 기다리지 않고 다음 작업으로 넘어가서 작업을 수행하는 방식
- 작업 1이 I/O 때문이 중지 될 때 CPU를 나머지 작업 중에서 어떤 작업을 CPU에게 넘겨줄 것인가 결정하는 것을 JOB scheduling이라고 한다. (job scheduling : 운영체제 기능)
-
Timesharing (multitasking)
- 사용자가 컴퓨터를 하나 두고 온라인 터미널을 이용해 여러 명이 컴퓨터 하나를 사용하는 시스템
- 메모리에다가 여러 작업을 둔다.
- 온라인 작업일 경우 여러개의 작업을 job이라고 하지 않고 task라고 한다.
- 만약 작업1이 cpu를 사용하고 있는데 오랫동안 cpu를 내놓지 않으면 i/o를 하지 않으면 나머지 작업들은 오래 기다려야 한다.
- 다른 작업이 기다리는 시간이 너무 길어지는걸 방지하기 위해 타이머를 두고 일정 시간동안 만큼만 cpu를 사용할 수 있게 한다.
- 주요 목적은 반응 시간을 줄이는 것 (반응 시간 : 사용자가 입력했을 때 처음 출력이 나올때까지 걸리는 시간)
- 다음 작업을 어떻게 선택할거냐 결정하는 것을 cpu scheduling 이라고 한다.
- swapping : 작업이 너무 많아서 메인 메모리에 들어 올 수 없다면, 작업들 중 일부는 디스크에 저장했다가 메모리를 비면 메모리에 올라오게 한다.(메모리 → 디스크, 디스크 → 메모리)
- virtual memory : 그럼에도 불구하고 메모리가 모자라면 프로세스 전체를 메모리를 싣는게 아니라 필요한 일부만 메모리에 적재해서 실행한다.
-
interrupt driven
- operating system이 동작하는 방식
- cpu는 평소에 사용자 프로그램을 실행하다가 사용자 프로그램이 운영체제에 어떤 서비스를 요청할 경우에만 운영체제가 깨어나서 실행 (trap or 시스템 호출) 하고 다시 운영체제 종료되고 사용자 프로그램 실행된다.
-
이중 모드 연산 (dual mode operation)
- 초기 cpu는 단일 모드로 실행 됫었는데 그 이후로 발전하면서 cpu에 mode bit이라는 것이 도입된다.
- mode bit가 1일때는 user mode, mode bit이 0일 때는 커널 모드 처럼 구별할 수 있도록 cpu가 발전
- cpu가 이 기능을 제공함에 따라서 현재 cpu가 사용자 코드를 실행하고 있는지 운영체제 코드를 실행하고 있는지 구별 (사용자 코드 - 유저 모드, 운영체제 코드 -커널 모드)
- 유저 모드에서는 사용할 수 없는 명령 존재(ex 프린트에 작업을 보내는 명령, io device 건드리는 부분, 인터럽트 걸 타이밍 지정 - 커널 모드에서만)
- 커널모드에서만 사용할 수 있는 명령을 privileged instruction (특권 명령) 이라고 한다. 유저 프로그램은 운영체제로부터 서비스가 필요하다고 하면 운영체제를 호출하게 되고 시스템 호출 처리하는 과정에서 cpu가 사용자 모드에서 커널 모드로 변경된다. 커널이 실행되면서 서비스를 하고 난 다음 사용자 모드로 돌아갈 때 cpu 모드를 사용자 모드로 넘어가게 된다.
-
virtual machine manager
- 두개의 모드 뿐만 아니라 여러 개의 모드를 구별할 수 있도록 더 개선된 cpu들이 나오고 있다.
-
Timer
- 타이머의 목적은 프로그램을 잘못 짜서 무한루프에 빠지게 되면 작업은 cpu를 내놓지 않고 다른 작업이 실행될수 없기 때문에 운영체제는 일반적으로 타이머를 세트해놓고 작업을 실행 하게 된다.
- 컴퓨터 시스템 내 클락이라는 게 발생하고 있기 때문에 클락에 따라서 시간이 감소하게 된다.
- 타이머가 0가 되면 하드웨어 인터럽트를 일으키게 되고 cpu가 제어권을 받게 되서 이작업을 중지하고 다른 작업으로 넘어갈 수 있다.
- 어떤 하나의 작업이 자원을 독점하는 것을 방지하기 위해서 타이머를 세트하게 된다.
운영체제가 자원 관리하는 방식들
-
프로세스 관리
- 프로세스는 실행중인 프로그램, 디스크로부터 프로그램이 메모리에 적재되서 cpu를 받아서 실행되고 있으면 프로세스라고 부른다.
- 프로그램은 디스크에 존재하는 정적인 개체, 프로세스는 동적인 개체
- 프로그램 실행되기 위해서는 자원들 (메모리, cpu 시간, I/O 장치) 할당 받아야 하는데 이를 운영체제가 할당하면서 도와줌
- 프로세스가 끝났다면 프로세스에 할당된 자원들을 운영체제가 회수해서 다른 프로세스가 사용할 수 있도록 할당하게 해줌
- 메모리에 명령어들이 올라와서 명령이 실행되는 순서를 스레드라고 부른다.
- 하나의 프로세스가 하나의 실행흐름을 가지면 단일 프로세스라고 부름
- 운영체제는 프로그램의 어떤 부분이 실행되고 있는지 알아햐 하고 PC레지스터를 갖고 있다.
- 하나의 프로세스는 하나의 스레드 하나의 PC 레지스터를 갖고 있다.
- 만약 다중 스레드라면 각 스레드마다 PC가 있고 다르게 역할을 나눠서 실행한다.
- 프로세스와 관련된 운영체제 연산들
- 사용자 및 시스템 프로세스 생성 및 삭제
- 프로세스 일시 중단 및 재개
- 프로세스 동기화를 위한 메커니즘 제공
- 프로세스 통신을 위한 메커니즘 제공
- 교착 상태 처리를 위한 메커니즘 제공
-
주 기억장치 관리
- 메인 메모리에는 프로그램 여러개가 올라와 있다.
- 메인 메모리에 어떤 파트가 어떤 프로세스에 의해 사용되고 있는가 어떤 부분이 사용되고 있지 않는 것에 대한 정보를 가지고 있어야 한다.
- 메인 메모리가 가득차서 프로세스 실행할 수 없다면 어떤 프로세스를 디스크에 내보내고 메모리에 여유가 생기면 어떤 어떤 프로세스를 메인 메모리에 가져올 것인가 결정한다.
- 필요에 따라 메모리 공간 할당 및 할당 해제 관리한다.
-
파일 시스템 관리
- 파일에 대해서 운영체제가 제공하는 기능은 파일로 만들고 지우고, 파일을 디렉토리 구조화하는 기능을 제공
- 파일에 대한 연산 (열고 닫고, 옮기고 쓰고, 디렉토리내 파일 생성,지우고 옮기기)
- 백업 파일로 저장하기도 함
-
디스크 자체 관리하는 기능
- 파일들이 디스크에 저장되기 때문에 디스크를 관리하는 기능을 운영체제가 제공한다.
- 디스크를 얼마나 잘 관리 하느냐에 따라 전체 컴퓨터 시스템에 상당히 큰 영향
- 많은 데이터를 디스크에 저장하면 디스크에 저장된것이 전부 메인 메모리에 올라와서 처리하기 때문에 디스크 잘 관리 해야 한다.
- OS 활동
- 디스크 빈 공간
- 디스크 공간 할당
- 디스크를 읽으려는 요청들이 여러개가 한꺼번에 들어올 수 있는데 여러개 요청이 어떤 순서로 디스크 서비스 하는지 결정 (디스크 스케줄링)
- 3차 스토리지인 마그네틱 테이프, OPTICAL STORAGE에 백업하는 기능도 운영체제가 해줘야 된다.
-
I/O Subsystem
- os의 한가지 목적은 사용자로부터 하드웨어 장치의 특성을 숨기는 것
- 디바이스마다 특징 다르고 컨트롤러 구성도 다르다.
- OS많은 부분이 디바이스 드라이버로 구성
- OS에서 일반적으로 다루기에는 디바이스들은 특징이 워낙 다르기 때문에 일반적인 이야기 하기 어렵다
- I/O SUBSYSTEM 기능
- 버퍼링, 캐싱, 스풀링을 포함한 I/O의 메모리 관리
-
정보 보호, 보안
- 보호
- 컴퓨터 시스템에서 여러 사용자들이 하나의 컴퓨터 시스템을 사용한다면 A라는 사용자 파일을 B가 지우면 안된다.
- 운영체제가 갖고 있는 파일을 사용자가 지우면 안된다
- 갖고 있는 자원 중 CPU를 한 사용자가 다 사용하거나, 메모리를 다 차지해서도 안된다.
- 운영체제가 갖고 있는 각종 리소스들을 사용자가 정당한 방법으로 사용할 수 있도록 강제하여 CPU들 정보를 운영해 자원 보호 한다.
- 보안
- 내부 , 외부 사용자가 불법적으로 정보를 가지고 가고 정보나 서비스 이용하는 것을 막는다.
- 바이러스를 처리하고 비밀번호를 지킨다.
- 시스템이 사용자들을 구별하는 방법
- USER ID로 다양 한 사용자를 구별
- 사용자마다 파일에 접근 권한을 다르게 줌으로써 제어한다.
- GROUP ID 통해 사용자 집합을 정의하고 각 프로세스 파일도 관리 및 제어
- 권한 상승으로 사용자마다 중요 파일에 대한 접근을 막기도 하고 허가하기도 한다.
- 보호
'School > 운영 체제' 카테고리의 다른 글
운영체제 구조 (0) | 2021.04.12 |
---|---|
운영체제 서비스 (0) | 2021.04.12 |
COMPUTING 환경 (0) | 2021.04.07 |
컴퓨터 시스템의 구성 (0) | 2021.04.04 |
운영체제란 (0) | 2021.03.29 |
Comments