3장
1.5 이중모드
-
한 컴퓨터를 여러 사람이 동시에 사용하는 환경/ 한 사람이 여러개의 프로그램을 동시에 사용
→ 한 사람의 실수가 프로그램 전체에 영향을 줄 수 있음 ex) STOP, HALT
-
이러한 실수를 방지하기 위해
User mode
와Supervisor mode
로 나뉨 → 이중모드- CPU가 동작하는 모드 분리
- 사용자모드
- 사용자 프로그램 실행될 때는 사용자모드
- 운영체제 서비스가 끝나면 다시 사용자모드
- 관리자모드
- privileged instructions (특권명령)을 내릴 수 있음 ex) STOP, HALT, RESET 등…
- 운영체제 서비스 실행될 때는 관리자모드
- 하드웨어/소프트웨어 인터럽트 발생하면 관리자모드
이중모드 구현 원리
- CPU 레지스터에서 모드를 나타내는 플래그(flag) 를 둔다
일반적인 프로그램의 실행
- 프로그램 적재
- user mode → system call → system mode (ISR) → user mode → …
- 만약에 유저모드인에 stop 과 같은 특권명령을 실행하려고 하는 경우 → O/S는 내부 인터럽트 발생했다고 판단 → ISR → 잘못 신호를 보낸 프로그램 종료시킴
1.6 하드웨어 보호
- I/O device protection
- 사용자의 잘못된 입출력 명령
-
다른 사용자의 입출력, 정보 등에 방해가 되는 경우
ex) 유저가 동시에 프린터에 접근하려고 할때/ 다른 사람의 파일 읽고 쓰는 경우
- 해결법
- 입출력 명령을 특권명령으로
- 입출력을 하려면 1. 운영체제에게 요청 → 2. system mode → 3. 운영체제가 입출력 대행 → 4. 입출력 끝나고 다시 유저모드
- 올바른 요청이 아니면 운영체제가 거부 (ISR 이용)
- 사용자가 입출력 명령을 직접 실행하는 경우 → Privileged instruction violation , 잘못 요청한 프로그램 종료
-
memory prrotection
https://codemcd.github.io/study/OperatingSystem-3장-이중모드와-보호/
CPU 는 address bus 를 통해 메모리 주소에 접근함
address bus 중간에 설치된 하드웨어 칩으로서 두 개의 레지스터를 통해 해당 프로그램의 주소 범위를 저장
- 다른 사용자 메모리, 운영체제 영역 메모리 접근 금지
- 운영체제 해킹 외 프로그램 해킹
- 해결법
- MMU(Memory Management Unit): CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품
- MMU 는 해당 메모리의 base/limit 을 설정, 특정 프로세스가 실행 했을 때 MMU 범위에 포함되면 실행시키고 아니면 접근하지 못하도록 설정
- MMU 설정 명령은 운영체제만 변경가능
- 다른 사용자 or 운영체제 영역 메모리 접근 시도하면? → Segment violation , 프로그램 강제 종
- cpu protection
- 한 사용자의 실수 혹은 고의로 CPU 시간 독점 ex) while (n=1)…
- 다른 사용자의 프로그램 실행 불가
- 해결법
- Timer 를 두어 일정 시간 경과시 타이머 인터럽트 발생
- 인터럽트 → 운영체제 → 다른 프로그램으로 강제 변환
1.7 운영체제 서비스
- 프로세스 관리
- 프로세스: 메모리에서 실행중인 프로그램 = prgram in execution
- 주요기능: 프로레스 생성,소멸, 활동 일시중지/재개, 통신, 동기화, 교착상태 처리
- 주기억장치 관리
- 주요기능
- 프로세스에 메모리 공간 할당
- 메모리의 어느부분이 어느 프로세스에 할당되었는가 추적 및 감시
- 프로세스 종료시 메모리 환수
- 메모리의 효과적 사용
- 가상 메모리: 하드디스크를 마치 메인메모리처럼 사용
- 주요기능
- 파일 관리
- Track/sectror 로 구성된 디스크를 파일이라는 논리적 관점으로 보게 함
- 주요기능
- 파일의 생성과 삭제
- 디렉토리의 생성과 삭제
- track/sector 와 file 간의 매핑
- 백업
- 보조기억장치 관리 (트랙, 섹터 고르기..)
- 하드 디스크, 플래시 메모리 등
- 주요기능
- 빈 공간 관리 → 섹터
- 저장공간 할당
- 디스크 스케줄링 → block 들이 흩어져 있는데 헤더를 조금 움직이면서 원하는 트랙/섹터를 읽을 수 있게함
- 입출력 장치 관리
- 주요기능
- 장치 드라이브
-
입출력 장치 성능향상
https://proneer.tistory.com/entry/버퍼링과-스풀링
- buffering: 입출력장치에서 읽은 내용을 메모리에 들고옴 → 빠르게 읽을 수 있게
- caching
- spooling: CPU 대신에 디스크에 저장,
컴퓨터와 입출력 장치를 직접 연결하지 않고 비교적 입출력 장치보다 빠른 처리 속도를 갖는 물리적인 저장 장치를 위치시킨 것
- 주요기능
- 네트워크
- 보호
1.8 시스템콜
- 운영체제 서비스를 받기 위한 호출 (프로세스가 OS 에 요청)