일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- swift baekjoon
- Swift
- 안드로이드스튜디오
- BAEKJOON
- IOS
- C언어
- 보호와 보안
- customPopup
- 연결리스트
- 버블정렬
- label
- Firebase
- 커스텀팝업
- 예외처리
- xocde
- 플러터
- 안드로이드
- deeplink
- Xcode
- 링크드리스트
- android java
- TextField
- 자바
- Android
- storyboard
- Android Studio
- text to speech
- 준코딩
- FLUTTER
- 백준
Archives
- Today
- Total
준코딩
운영체제 구조 본문
운영체제 서비스
- 사용자 인터페이스(User Interface): 거의 모든 운영체제는 사용자 인터페이스를 제공한다.
- 프로그램 실행: 프로그램을 메모리에 적재해 실행할 수 있어야 한다. 정상적이든 비정상적이든 실행을 끝낼 수 있어야 한다.
- 입출력 연산: 실행 중인 프로그램은 입출력을 요구할 수 있다.
- 파일 시스템 조작: 파일 생성, 삭제할 수 있으며, 지정된 파일을 찾을 수 있어야 하고 파일의 정보를 열거할 수 있어야 한다.
- 통신: 한 프로세스가 다른 프로세스와 정보를 교환이 가능해야 한다.
- 오류 탐지: 모든 가능한 오류를 항상 의식하고 있어야 한다. 운영체제는 올바르고 일관성 있는 계산을 보장하기 위해 각 유형의 오류에 대해 적당한 조치를 취해야 한다.
- 자원 할당: 다수의 사용자나 다수의 작업들이 동시에 실행될 때 그들 각각에 자원을 할당해야 한다.
- 회계: 사용자가 어떤 종류의 컴퓨터 자원을 얼마나 많이 사용하는지 관리 해야 한다.
- 보호와 보안: 여러 프로세스가 동시에 실행될 때 한 프로세스가 다른 프로세스나 운영체제 자체를 방해해서는 안 된다. 보호는 시스템 자원에 대한 모든 접근이 통제되도록 보장하는 것을 포함한다. 보안은 각 사용자가 자원에 대한 접근을 허가받기 위해 통상 패스워드를 사용해서 시스템에게 자기자신을 인증하는 것으로부터 시작한다.
사용자 운영체제 인터페이스
- 명령어 라인 인터페이스 또는 명령어 해석기를 제공
- 명령어 라인 인터페이스는 사용자가 운영체제가 실행할 명령어를 직접 입력할 수 있도록 한다.
- 사용자가 그래피컬 사용자 인터페이스(GUI)를 통하여 운영체제와 접촉하게 하는 것.
명령어 해석기: 셸(shell) 이라고 한다. 사용자가 지정한 명령을 가져와서 그것을 실행하는 것. 즉, 생성, 삭제, 리스트, 프린트, 복사, 실행 등을 한다.
그래피컬 사용자 인터페이스(Graphical User Interface) : 기본화면(데스크톱) 은유를 채용한다. 명령어를 직접 입력하는 것이 아니라 GUI가 마우스를 기반으로 하는 윈도 메뉴 시스템을 제공한다.
시스템 호출(System Calls): 운영체제가 제공하는 서비스에 대한 인터페이스를 제공한다. 특정 저수준 작업은 어셈블리 명령을 사용하여 작성되어야 하더라도 이러한 호출은 일반적으로 C와C++ 언어로 작성된 루틴 형태로 제공된다.
시스템 호출의 유형
- 프로세스 제어: 실행중인 프로그램ㄹ은 실행을 정상적 또는 비정상적으로 끝낼 수 있어야 한다. 프로그램에 문제가 발생해 오류 트랩을 유발할 경우, 문제의 원인을 결정하기 위해 디버거에 의해 검사될 수 있다.
- 파일 관리: 파일을 생성 하고 삭제할 수 있어야 한다. 파일을 열고 사용가능, 읽고, 쓰고, 그리고 위치 변경을 할 수 있다.
- 장치 관리: 자원 요구/반납/읽기/쓰기/위치 변경
- 정보 유지보수: 시간, 날짜, 시스템 데이터, 프로세스/파일/장치 속성
- 통신: -통신 열결 생성/삭제
-메시지 송신, 수신, 상태 정보 전달
-원격 장치 부착/분리 - 보호: -역사적으로 다중 사용자/다중 프로그램 환경에서 고려됨
-네트워크와 인터넷 연결로 모든 컴퓨터 시스템에서 보호를 고려해야 함
-자원 접근 제어 - 허가권 설정
시스템 프로그램: 프로그램 개발과 실행을 위해 편리한 환경을 제공하는 프로그램
파일관리
상태 정보
파일 변경
프로그래밍 언어 지원
프로그램 적재/실행
통신
서비스, 데몬, 서브시스템: 시스템이 정지할 때까지 특정 서비스 제공을 위하여 백그라운드로 계속해서 실행되는 프로세스.
응용 프로그램: 일반적인 문제 해결이나 연산 처리에 유용한 프로그램
운영체제의 설계와 구현
- 설계 목표와 명세정의
-하드웨어와 시스템 유형의 선택에 영향 받음 - 설계 목표
-사용자 목표: 사용하기 쉽고, 배우기 쉽고, 신뢰성 있고, 안전하고, 빠름
-시스템 목표: 설계, 구현, 유지 보수가 쉽고 유연성, 신뢰성, 무오류, 효율적이어야 한다
-요구 조건은 애매하고 다양하게 해석될 수 있으며, 일반적으로 합의된 사항은 없다. - 운영체제의 설계 및 구현
-모든 요구 조건을 해결하는 완전한 해결책은 없지만, 성공이 입증된 접근법은 있다.
-소프트웨어 공학에서 개발된 일반적인 원칙을 사용
-내부 구조는 운영체제마다 다를 수 있다.
운영체제 구조
- Microkernel
-필수적이 아닌 구성 요소를 커널에서 모두 제거하고 시스템 및 사용자 수준 프로그램으로 구현함
@장점: 확장이 용이 - 새로운 서비스는 사용자 공간에 추가
높은 신뢰성과 보안성-> 커널 모드에서 수행되는 코드가 적고 대부분 사용자 프로세스로 실행
@단점: 시스템 함수 오버헤드 - 사용자 공간과 커널 공간 간의 통신 오버헤드
- Simple Structure
-monolithic 구조 : 많은 기능들이 하나의 계층으로 구현됨
-monolithic 구조의 장단점
@장점: 성능(커널 내부 통신 오버헤드가 거의 없음)
@단점: 구현과 유지보수가 어려움 - -많은 상용 운영체제가 잘 정의된 구조를 갖지 않음
- Layered Structure
-운영체제가 여러 계층으로 구분됨
-각 계층은 하위 계층 위에 구축됨
운영체제 생성
- 운영체제 구성
-운영 체제는 다양한 구성을 가진 모든 종류의 시스템에서 실행되도록 설계되었다.
-운영 체제는 특정 컴퓨터를 위해 구성 되어야 함
- 운영체제 생성
-운영체제 배포: 디스크, CD-ROM, DVD-ROM, ISO image 형태
-하드웨어 구성 정보: 파일을 읽거나, 직접 하드웨어를 검사하여 얻음(CPU type, memory size, OS option)
-운영체제 3가지 생성 방법
-소스코드 수정 후 완전히 다시 컴파일
-구성 테이블 생성->미리 컴파일된 라이브러리에서 필요한 모듈 선택 후 링크
-완전한 테이블 방식 - 모듈 선택이 실행 시에 일어남
시스템 부트
- Bootstrapping(booting)
-커널을 적재하여 컴퓨터를 시작하는 절차 - Bootstrap loader
-커널을 찾아서 메모리에 적재하고 수행을 시작하는 일을 하는 ROM에 저장된 코드
-대개 시스템을 진단하는 작업을 수행하고, 시스템 전체를 초기화 한 후에 운영체제를 시작시킴 - Firmware
-bootstrap 코드의 변경이 가능하도록 ROM대신 EPROM에 저장함
-하드웨어와 소프트웨어의 중간 특성을 가져서 firmware라고 부름
'CS > 운영체제' 카테고리의 다른 글
보안 (0) | 2019.04.09 |
---|---|
주 메모리 & 가상 메모리 (0) | 2019.03.29 |
보안 Security (0) | 2019.03.29 |
운영체제 서론2 (0) | 2019.01.11 |
운영체제 서론1 (0) | 2019.01.10 |
Comments