Ch2. Operating-System Structures
Ch2. Operating-System Structures
목차
- 운영체제 시스템 서비스
- 사용자와 운영체제 시스템 인터페이스
- 시스템 콜
- 시스템 서비스
- 링커와 로더
- 어떤 프로그램 특정 OS에서만 동작하는 이유
- 운영체제 시스템 디자인과 구현
- 운영체제 시스템 구조
- 운영체제의 빌드와 부팅
- 운영체제 시스템 디버깅
목표
- 운영체제가 제공하는 서비스 식별
- 시스템 콜 이 서비스 제공에 어떻게 사용되는지 설명
- OS 설계 전략 비교 및 대조
- monolithic
- layered
- microkernel
- modular
- hybrid
- 운영체제를 부팅하는 과정 설명
- 운영체제 성능 모니터링 도구 활용
- 리눅스 커널과 상호작용할 수 있는 커널 모듈을 설계하고 구현하기
운영체제 서비스들
운영체제는 프로그램들과 사용자에게 프로그램이나 서비스를 시킬 수 있는 환경을 제공한다.
- 사용자 인터페이스
- 프로그램 실행
- 입출력 관리
- 파일시스템 조작
- 통신 - 같은 컴퓨터 내 혹은 네트워크 사이 다른 컴퓨터들과
- 에러 검출
- 자원 할당
- 로깅
- 보호와 보안
- 보호: 시스템 자원에 접근을 제어
- 보안 : 외부로부터 시스템을 방어, 사용자 인증, 접근 권한 설정
운영체제 사용자 인터페이스
CLI (Command Line Interface)
CLI (Command Line Interface)는 사용자가 직접 명령어를 입력할 수 있게 한다.
- CLI는 커널에 직접 포함되기도하고, 시스템 프로그램 형태로 별도로 존재할 수 도 있다.
- CLI는 여러 종류가 있을 수 있고, 이를 shell이라고 한다.
- 사용자의 명령어를 받아서 해당 명령어를 실행함
- 명령어의 종류
- 아이콘으로 파일, 프로그램, 동작 등을 표현
- 마우스 클릭/오버 등으로 정보 확인 , 실행, 폴더 열기 등의 동작 수행 가능
- 폴더 : 디렉터리의 시각적 표현
시스템 콜
OS에서 제공해주는 프로그래밍 인터페이스 이다. 고수준 API를 이용해 system call를 사용할 수 있다.
- 보통, 각 시스템 콜은 숫자 번호가 연결되어 있음
- 시스템 인터페이스는 이 번호에 따라 테이블을 유지하며 연결된 항목을 찾음
- 시스템 콜 인터페이스는 운영체제 커널의 시스템 콜을 호출하고, 그 결과 상태와 리턴 값을 사용자에게 되돌려줌
- 시스테 콜이 어떨게 구련되었는지 전혀 몰라도 됨 -> 그냥 갔다가 쓰고, 결과에 따른 처리만 해주면 됨
- 근데 호출할때 많은 정보가 필요할 때가 있음
- 프로세스 제어
- create, terminate
- end, abort
- load, execute
- get attributes, set attributes
- wait for time
- wait event, singal event
- allocate and free memory
- dump memory if error
- debugger - bugs, signle step execution
- locks - 프로세스간 공유 데이터 접근 관
- 파일 관리
- create, delete
- open, close
- read, write, reposition
- get and set file attributes
- 장치 관리
- request, relsease
- read, write, reposition
- get / set attributes
- logically attacth or detach device
- 정보 유지
- 통신
- create, delete 통신 연결
- send, receive messagees - 호스트 이름 또는 프로세스 이름
- shared-memory
- 보호
- Linkers
- 이런 객체 파일들을 하나의 실행 파일로 결합함
- 이 과정에서 라이브러리들도 함께 포함됨
- Loader
- 메모리에 프로그램을 불러옴
- relocation은 프로그램 내 코드와 데이터를 최종 주소 로 조정하는 작업 현대 일반 목적 시스템에서는 라이브러리를 실행 파일에 직접 연결 하지 않음 -> 대신에 동적 연결 라이브러리를 사용함 (필요할때 불러오고, 동일 버전 공유함)
운영체제의 구조
- 간단한 구조 (MS-DOS)
- 좀 더 복잡한 구조 (UNIX)
- Layerd - an abstraction
- Micokernel
- mac 에서 사용하는 방식
- 장점 : 쉬운 확장, 새로운 구조에 쉬운 적용, 더 안전, 더 신뢰가 높음
- 단점 : 사용자 공간과 커널 공간의 통신이 많아서 overhead 가 있ㄱ음
This post is licensed under
CC BY 4.0
by the author.