운영체제 서비스
(칠판 그림 추가하기)
모든 application 프로그램은 HW 자원을 사용한다.
이때 자원을 관리하고 나눠주는 것은 OS가 담당.
이때 OS가 하는 일 (운영체제 서비스) ; 다 "관리" 업무
1. 프로세스 관리
2. 주기억장치(메모리) 관리
3. 파일 관리
4. 입출력 관리
5. 네트워킹 (컴퓨터끼리 통신)
6. 보호
각 부서별로 어떤 일을 하는 가 알아보자
1. 프로세스 관리
; OS에서 가장 중요한 역할 중의 하나
프로세스 : 메모리에서 실행 상태에 있는 프로그램
cpu에서는 메모리에 올라와있는 프로그램만 다루기 때문에, 특별히 프로그램 관리가 아닌 '프로세스 관리'라고 한다.
주 기능 ; 프로세스의 생성-소멸, 프로세스 활동 일시중지-활동재개, 프로세스간 통신, 프로세스간 동기화, 교착상태 처리
2. 주기억장치 관리
메모리의 어느 부분이 어느 프로세스에 할당되어 있는가
프로세스 종료 시 메모리 회수
메모리를 효과적으로 사용
가상메모리 기술; (일반적으로 메모리는 용량이 작지만, 하드디스크는 용량이 크다.
그렇지만 난 메모리를 좀 더 크게 사용하고 싶어! -- 가상메모리 기술)
3. 파일 관리
(디스크의 원리 -- 칠판 그림 첨부하기)
원래는 물리적으로 track/sector의 집합으로 이루어져있지만, 그걸 사용자에게는 파일이라는 개념으로 보이도록 OS가 관리해줌
주기능 ; 파일 생성/삭제, 디렉토리 생성/삭제, 기본 동작지원 (open, close, read, write, create, delete)
Track/sector - file 간의 매핑(mapping)
4. 보조기억장치 관리
track/sector을 몇개 모아놓은 것 -- block
(block 관련 추가 조사, 추가자료 첨부하기)
이 블락들의 비어있는 공간, 사용되는 공간이 나눠지는데 이런 공간관리를 얘가 함
주 기능 ; 빈공간 관리, 저장공간 할당, 디스크 스케쥴링(블락들이 흩어져있는데, 여기 헤드를 많이 움직이면 시간이 만ㅎ이걸리는데, 이때 어떻게 하면 헤드를 적게 움직이면서 원하는 트랙이나 섹터를 읽어올 수 있을 것인가를 결정해줌)
5. 입출력 장치 관리
I/O 장치 관리
주기능 ; 장치 드라이브(새로운 장치 설치할 때), 입출력장치의 성능향상 : buffering(입출력장치에서 읽은 내용을 일단 메모리로 들고오는 것. 한번 들고오면 빨리 읽을 수 있다), caching, spooling(메모리 대신에 하드디스크를 중간매체로 사용하는 것, ex.프린터로 인쇄하는 경우)
시스템 콜 (System call) ; 운영체제 서비스를 받기 위한 호출
APP 에서 OS를 호출하는 경우 ('야 OS야 이런일 해주라, 저런일 해주라') -- 칠판 그림 첨부
- 주요시스템 콜
- process : end, abort, load, execute, create, terminate, get/set, attributes, wait event, signal event,
- Memory : allocate, free
- File : 생성, 삭제, 열고 닫고 읽고 쓰고 ...
...
일반 application 프로그램이 OS한테 요청하는 것을 system call 이라고 한다.
시스템 콜은 일반적으로 특정 레지스터에 특정 값을 준다음에, 소프트웨어 인터럽트를 걸어서 서비스를 받을 수 있다.
예제 : MS-DOS
- 80년대 pc에서 사용되던 OS
- INT 21H
링크 누르면 DOS 인터럽트 코드 있음
System call을 어떻게 만드는 지 과정
(3C번 function 코드가 create file. -> 'CPU 속의 register에 파일의 속성(파일의 생성날짜, 주인, 파일인지 디렉토리인지 등등)을 넣어라'
여기서 어쩌고 저쩌고 더 있던 것 같은 데 그건 추후 추가해서 수정)
예제 : 파일 만들기 (create file)
- AH = 3CH. CX = file attributes, DS:DX = file name
(추후 수정; 직접 실습하는 거 이미지-움짤 만들어서 올리기)
어셈블리어로 실습?
메모리 어딘가에 우리가 만들고자하는 파일("AAA")을 둔다(100번지에)
mov CX, 0
mov dx, 100 // 100번지에 dx를 둔다
mov AH, 3C
int 21h // 인터럽트
-> 이걸 실행하면 100번지에 "AAA"라는 파일이 만들어진다??
예제 : 리눅스
- INT 80H
- 예제 : 파일 만들기 (create file)
- EAX = 8, ECX = file attributes, EBX = file name
코드 (어셈블리):
mov EAX, 8
mov ECX, 0
mov EBX, '파일이름(파일이름이 적힌 주소)'
int 80h
-> 이걸 실행하면 n번지에 "AAA"라는 파일이 만들어진다
(직접 터미널 창에서 뭐 하는거 있는데 이것도 해보고 영상-움짤-짤 올리기)
내가 하드디스크에 파일을 어떻게 만들 수 있을까?
-- 파일이름 + attribute 한 뒤에 -> OS한테 부탁만 한다
하드디스크의 몇번째 줄 몇번쨰 섹터에 넣을 지 고민할 필요도 없이, 그냥 정해진 약속대로 EAX, ECX 등등에 정해진 값만 넣고 소프트웨어 인터럽트만 걸어주면 됨.
시스템 콜은 어셈블리어로 작성하면 된다.
시스템 콜 라이브러리 -- 파일을 지우고/만드는 등의 이러한 루틴들을 처음부터 object 파일 형태로 만들어 우리한테 제공함
'IT > 학과 공부' 카테고리의 다른 글
C에서 시그널을 보내고 처리하는 방법 (kill, signal, sigaction) (0) | 2022.01.06 |
---|---|
[KOCW] 운영체제 3차시 - 프로세스 관리 (0) | 2021.11.08 |
[KOCW] 운영체제 3차시 - 이중모드, 하드웨어 보호 (0) | 2021.11.08 |
[KOCW] 운영체제 2차시 - 고등운영체제, 인터럽트 기반 운영체제 (0) | 2021.10.27 |
[KOCW] 운영체제 2차시 - 운영체제 역사 (0) | 2021.10.27 |