운영체제의 서비스 - 부팅
맨 위가 사용자, 다른 프로그렘입니다. 이것이 응용프로그램입니다.
서비스에는 프로그램 실행, i/o 실행 등 많이 있습니다.
또한 사용 할당, 세는 것, 보호와 보안도 서비스 합니다.
이런 서비스 들은 사용자에게 system calls 인터페이스로 제공됩니다.
4가지로 운영체제 서비스를 나눌 수 있습니다.
부팅 서비스
사용자 서비스
- User Interface
- Program execution
- I/O operations
- File system manipulation
- Inter-process communications
- Error detection
시스템 서비스
- Resource allocation
- Accounting
- Protection and security
시스템 호출
부팅 서비스
부팅booting 또는 부트스트래핑bootstrapping
- 운영체제를 주기억장치에 적재하는 과정
부트 로더
- 부트스트랩 로더bootstrap loader
- 운영체제를 주기억장치에 적재하는 소규모 프로그램
전원이 꺼저 있으면 운영체제가 하드디스크에 있습니다.
부팅이 된다면 운영체제가 RAM에 올라옵니다.
그 다음부터는 프로세스는 정상적인 동작을 해서 응용 프로그램을 실행할 수 있게 됩니다.
그럼 RAM으로 어떻게 올리느냐? 올려주는 프로그램이 필요한데 그게 부트 로더 입니다.
운영체제가 없는대서 부팅을 하는 방법
boot loader는 커널(=운영체제)을 옮깁니다.
usb를 통해서 프로그램을 다운로드 할 수 있습니다.
아두이노는 스캐치로 되어 있습니다.
이 때 부트로더가 스케치를 실행합니다.
즉, 부트로더가 꼭 커널을 옮기는 것에만 쓰이는 것이 아닙니다.
운영체제의 서비스 - 사용자 서비스
프로그램 실행Program execution
- OS는 프로그램 실행을 위해 메모리 할당, CPU 스케줄링등을 함
입출력 연산I/O operations
- 사용자가 입출력 동작을 할 수 있게 해 줌(read, write를 해서 운영체제에게 시스템 콜 해야합니다.)
파일 시스템 조작File system manipulation
- 사용자가 파일을 생성, 수정, 검색, 삭제 할 수 있게 해줌
- OS는 논리적 파일을 물리적 장치(디스크)에 블록단위로 구현.
우리가 보는 파일은 논리적 파일입니다.
어디에 저장되어있는지 물리적 파일은 알 수 없습니다.
시그널, 파일, 공유 메모리, 메세지를 보낼 수 있습니다.
파일로 통신을 하려면 락을 해야하는 상황이 올 수 있습니다.
프로세스 A,B가 있다고 할 때 메모리영역을 공유 메모리로 만들어서 프로세스 A도 공유 메모리를 엑세스하고 프로세스 B도 공유 메모리를 엑세스할 수 있게 합니다.
공유 메모리를 달라고하면 주는게 운영체제 입니다.
메세지를 보내면 메세지큐에 어딘가에 있어야 합니다.
프로세스B가 그 메세지를 받으려면 메세지큐에서 받을 수 있습니다.
파이프를 이용해서 프로세스간 통신을 할 수 있게 해줍니다.
부모 프로세스와 자식 프로세스간에 파이프로 통신을 할 수 있습니다.
이름 없는 파이프는 부모,자식 같이 특별한 프로세스 간에 통신할 수 있는 방법입니다.
보통 프로세스는 이름있는 파이프를 사용합니다.
오류 탐지Error detection 및 조치
- 유형별로 적절히 조치
- 프로세서, 메모리 오류 : 데이터 손상 , 정전
- 입출력장치 오류 : 패리티 오류(데이터 전달하면서 생기는 오류), 하드디스크 불량 섹터 검출, 프린터 종이 부족
- 사용자 프로그램 오류 : 연산의 오버플로, 부적절한 기억장치 장소 접근
답이 없음
모두가 다 사용됩니다.
부트스트랩핑이라고 합니다.
운영체제의 서비스 - 시스템 서비스
기타 시스템 서비스 : 자원 할당, 회계, 보호와 보안
- 사용자가 아닌 시스템 자체의 효율적 동작을 보장
자원 할당Resource allocation
- CPU시간, 메인 메모리, 하드 디스크 , 입출력장치
회계Accounting
- 특정 사용자, 특정 작업이 시스템의 자원을 얼마나 사용하는지 추적
- 사용자 서비스 개선을 위해 시스템 재구성 시 활용
보호Protection와 보안Security
비슷한 말이긴 합니다.
접근제어 - 읽을 수 있냐, 쓸 수 있냐 등
- 보호 : 자원에 대한 사용자나 프로세스의 접근 제어 메커니즘
- 보안 : 내/외부 공격 (침입, 방해, 절도, 손상)을 방어
- 자원 보호 기법
- Access Control Matrix, Global Table, Access Control List, Capability List
운영체제의 서비스 - 시스템 서비스 - 자원보호 기법
주체(=사용자)
- 사용자나 프로세스와 같은 능동적 개체
객체
- 파일,메모리,프린터 등의 수동적 자원
접근 제어 행렬(Access Control Matrix)
- 주체의 객체에 대한 접근 권한을 표시한 행렬
- 파일1은 읽을 수 있다, 없다. 등을 나타낸 것입니다.
전역 테이블(Global Table)
- (주체, 객체, 접근 권한)의 목록
- D1이 파일3에 기록할 수 있다 라는 쌍을 쭉 목록을 만들어 놓는 것입니다.
접근 제어 리스트(Access Control List)
- 객체를 중심으로 한 접근 제어 리스트, 즉 접근 제어 행렬에 있는 각 열
- 접근 제어 행렬이 한 열에 해당합니다.
권한(자격) 리스트(Capability List)
- 주체를 중심으로 한 권한 리스트, 즉 접근 제어 행렬에 있는 각 행
캐시 메모리가 아닙니다.
대각 행렬은 없습니다.
선형대수에 나오는 것입니다.
운영체제의 서비스 - 시스템 호출 서비스
커널이 제공하는 서비스에 대한 Programming Interface
사용자 프로세스에게 커널 서비스를 제공하는 메커니즘
유저 프로세스가 잘 수행되다가 시스템 콜을 하면
쭉 내려와가지고 시스템 콜을 수행한다음에 다시 돌아갑니다.
mode bit는 지금 cpu가 유저모드를 돌고있나, 커널모드를 돌고있나 확인하는 비트입니다.
상태 레지스터중 하나일 것 같습니다.
시스템 호출 방법
- 프로그램에서 서브루틴 호출
- 명령 해석기에서 명령어로 호출
시스템 호출 APIs
- Win32 API for Windows
- POSIX API for POSIX-based systems
- UNIX, Linux, and Mac OS X(POSIX-based systems 들)
- 우리가 배운 시스템 호출은 다 여기에 속합니다.
- Java API for the Java virtual machine (JVM)
POSIX-based systems 예시
read라는 함수의 api 정의 입니다.
시스템 호출 종류
파일 시스템을 동학하는 예시들 입니다.
시스템이 가지고 있는 정보를 보려면 시스템 콜 함수를 사용해야 합니다.
시스템 호출이 일어는 과정 입니다.
user 프로그램에서 open()이라는 시스템 콜을 하면 커널모드로 내려가서 커널 안에서 어떤일이 일어나느가?
시스템콜 핸들러는 테이블에서 fucntion pointer로 뛰게 해주는 것입니다.
테이블은 어떤 함수는 저기로 어떤함수는 여기로 프로그램 위치를 가지고 있을 겁니다.
다 끝나면 다시 유저모드로 올라갑니다.
사실 한번에 가는 것이 아니라
C언어를 보면
read()를 호출 하면 C library를 부른거 같은 형태로 보입니다.
즉 , library를 한번 거칩니다.
wrapper는 껍대기 입니다.
전달한 합니다.
시스템 핸들러는 진짜 read()하는 함수를 가리키는 역할을 합니다.
그리고 진짜 read()가 일어나고 돌아갑니다.
똑같은 것을 시간순으로 그려놓은것 입니다.
printf 같은 것도 사실 시스템콜을 할 수 밖에 없습니다.
write해야 하니깐
시스템 호출 시 매개변수 전달방법
레지스터로 전달
- 개수 제한 단점
- 레지스터에 시스템 호출 함수를 저장하는 것 입니다.
레지스터에 못하니 메모리에 해야합니다.
메모리에 저장하는 2가지 방법
매개변수를 메모리에 저장하고 메모리의 주소를 레지스터로 전달
- Linux, Solaris
시스템 콜13번을 하기 위해서 운영체제 영역에서 시스템콜13에 해당하는 것을 수행합니다.
수행하는 과정에서 파라미터를 사용할 것입니다.
파라미터를 메모리에 저장해 놓고
사용할 때 레지스터에 파라미터가 저장된 메모리 주소를 사용합니다.
매개변수를 스택stack으로 전달push
매개변수를 메모리에 저장하긴 하는데 스택에다가 저장하는 것 입니다.
스택의 어느 위치에 메게변수가 있는지 알 수 있습니다.
'Computer Science > OS' 카테고리의 다른 글
컴퓨터 하드웨어의 구성(프로세서, 메모리, 시스템버스, 주변장치) (0) | 2021.09.06 |
---|---|
운영체제의 구조 (0) | 2021.08.31 |
운영체제의 소개 - 발전과정 (0) | 2021.08.30 |
운영체제의 소개 - 개념, 개발목표, 기능 (0) | 2021.08.30 |
운영체제의 소개 - 유형 (0) | 2021.08.30 |