설계 목표(goal)과 명세(specification)정의
- 하드웨어와 시스템 유형(batch, time shared, single user, multi-user, distributed, real tiem, general purpose)의 선택에 영향 받음
요구조건 지정 (설계 목표)
- 사용자 목표 - 사용하기 쉽고, 배우기 쉽고, 신뢰성 있고, 안전하고, 빠름
- 시스템 목표 - 설계, 구현, 유지 보수가 쉽고, 유연성, 신뢰성, 무오류, 효율적이여야 함
- 요구 조건은 애매하고 다양하게 해석될 수 있으며, 일반적으로 합의된 사항은 없음
운영체제의 설계 및 구현
- 모든 요구 조건을 해결하는 완전한 해결책은 없지만, 성공이 입증된 접근법은 있음
- 소프트웨어 공학에서 개발된 일반적인 원칙을 사용
- 내부 구조는 운영체제마다 다를 수 있음
기법(Mechanism)과 정책(Policy)
Mechanism과 Policy - 둘을 분리하는 것이 중요한 원칙임
- Mechanism : 어떻게 할 것인가? (How)
- Policy : 무엇을 할 것인가? (What)
EX) CPU 보호 방법
- Mechanism : CPU 보호를 위하여 타이머 구조를 사용 -> 바뀌지 않는 것
- Policy : 특정 사용자를 위한 타이머 양을 결정하는 것 -> 변경 가능
Mechanism과 Policy의 분리는 flexibility를 위해서 중요함
- policy는 시간이 지남에 따라서 변경될 수 있음
- mechanism은 정책 변경에 민감하지 않는 일반적인 것이 바람직함
- 시스템 매개 변수의 재정의에 의해서 policy 변경이 이루어지도록 함
> UNIX 초기 : 시분할 스케줄러
> Solaris 최근 버전 : loadable table에 의해 제어되는 스케줄러
- microkernel 기반 OS - mechanism과 policy의 극단적 분리
- Mac OS와 Windows - mechanism과 policy를 함께 작성됨 (시스템 내에 코드화 되어있음)
> interface가 kernel과 system library에 포함 -> global look and feel(전역적 외관과 느낌)
시스템 구현
운영체제의 구현
- 초기의 운영체제는 어셈블리 언어로 작성됨
- 현재의 대부분의 운영체제는 고급 언어로 작성됨
- 커널의 저수준 코드는 여전히 어셈블리 언어로 작성됨
> 장치 드라이버, 레지스터 상태 저장 및 복구 등
system programs의 구현
- C, C++, PERR,PYTHON 로 작성됨
고급 언어 구현의 장단점
장점 :
- 코드를 빠르게 작성
- 간결한 코드
- 이해와 디버깅이 쉬움
- 이식하기 훨씬 쉬움
주장되는 단점 :
- 속도가 느려짐, 소요 메모리가 증가됨 -> 현재는 문제가 되지 않음
문제가 안 되는 이유 :
- 현대의 최적화 컴파일러는 일반적인 어셈블리 언어 프로그래머보다 훨씬 우수한 코드를 생성할 수 있음
- OS의 주된 성능 향상은 더 좋은 자료구조와 알고리즘에 의한 것임.
2.8 운영체제 디버깅 (0) | 2020.04.17 |
---|---|
2.7 운영체제 구조 (0) | 2020.04.17 |
2.5 시스템 프로그램 (0) | 2020.04.04 |
2.4 시스템 호출의 유형 (0) | 2020.04.04 |
2.3 시스템 호출(system call) (0) | 2020.04.04 |
댓글 영역