- 운영체제의 동작
- 전원이 들어오면 Bootstrap program이 가장 먼저 실행(Boot loader)
- kernel 로드 - 커널부분이 한 축을 이룸
- system daemons 실행 - 커널 밖에서 시작되는 프로그램
- 하드웨어적, 소프트웨어적인 인터럽트들이 반응 - HW는 인터럽트, SW는 트랩 또는 exception
- Multiprogramming(Batch system)과 Multitasking(timesharing)
- 멀티프로그램 - kernel내에 있는 job scheduling에 의해 job의 실행 순서와 형태를 잘 조직하여 CPU가 항상 하나의 job(코드와 데이터로 이루어져 있는 실행 단위)을 실행할 수 있도록 해줌
- 타임쉐어링 - job이 실행중일 때라도 어떤 근거에 기반해 빠르게, 자주 교체해서 실행 -> 시간이 모두 끝나서 교체될 수도, 중간마다 교체될 수도 있음
- 메모리에 탑제된 프로그램을 프로세스라고 함 - 여러개 준비되어 있으면 CPU 스케쥴링에 의해 해당 프로세스를 선택
- 메모리를 너무 많이 차지하면 외부로 내보내거나 가져오기도 함(swapping), 가상메모리 사용
- 운영체제의 모드
- 커널 모드 - 하드웨어 추상화를 통해 하드웨어 제어기능들을 제한없이 사용(특별한 권한 - 특권) -> 시스템 콜 같은 것들을 실행하기 위해 전환, 끝나고 유저모드로 복귀
- User 모드 - 시스템에 영향을 주지 않는 일반적인 실행모드
- 사용자 모드에서 커널 모드로의 전환
- 프로세스 관리
- 프로세스 - 실행중에 있는 프로그램을 뜻함(메모리에 로딩된 상태), CPU, 메모리, 데이터 등의 자원 리소스를 가지고 일을 수행
- 프로세스가 끝나면 자원을 반드시 반환해야 함
- 프로세스는 다시 더 작은 단위의 쓰레드를 가짐 - 싱글 쓰레드, 멀티 쓰레드 프로세스
- time sharing 방식을 통해 쓰레드들은 멀티 테스킹을 하게 됨
- program counter를 이용하여 어디를 실행할지 정함
- 메모리 관리
- 메모리에 프로세스가 저장되면 file이라는 형태로 저장이 됨
- 데이터나 메모리 자체를 저장하기도 함
- file은 수 만개의 단위로 쪼개서 관리
- 초창기의 컴퓨터는 하드디스크가 없었으며 플로피 디스크를 사용
- 최초의 하드디스크는 20MB였고 현재는 테라바이트까지 가짐
- 데이터 처리 경로
- 컴퓨터 환경
- 컴퓨터 -> 웹서버에서 정보를 얻음
- 모바일 - 스마트폰(IOS, 안드로이드 등)
- 분산 환경 - 네트워크를 이용하여 시스템을 나누어놓고 사용(동등)
- 클라이언트 서버환경 - 정보를 주는 서버가 정해져있고 클라이언트들이 받아옴(웹서버, 파일서버)
- Peer-to-Peer 환경 - P2P라고도 함
- 가상화(Virtualization) - 하나의 운영체제위에 다른 운영체제를 실행하는 환경, 실제 가상화 혹은 에물레이터를 이용하는 방법이 있음
- 클라우드 환경 - storage를 서비스, 하나의 스토리지만을 사용, 스토리지에서 컴퓨터 환경도 사용가능(SaaS, PaaS, IaaS)
-
다양한 컴퓨팅요소들
-
녹색 - 내가 직접 설치하여 가지고 있다는 의미
-
붉은색 - 서비스로 제공받아 사용
-
IaaS(두 번째) - 하드웨어는 빌려쓰고 어플리케이션은 설치하여 사용(가상환경처럼 보임)
-
PaaS(세 번째) - 플렛폼을 제공하는 서비스, 자신만의 어플리케이션과 데이터를 가질 수 있고 나머지는 제공하는 것을 사용
-
SaaS(마지막) - 모든 것들을 빌려쓰는 서비스, 접속만 하면 설치없이 사용 가능 -> ex)메일 시스템
- 임베디드 시스템 환경
- 실시간 시스템 환경
- 하드 실시간 시스템 - 프로세스 안에 혹은 프로세스 자체가 내가 원하는 시간안에 정확하게 끝나는 것
- 소프트 실시간 시스템 - 위와같은 시스템을 가지고는 있으나 꼭 원하는 시간안에 정확하게 끝나지 않아도 됨
- 오픈 소스 시스템 - LINUX와 같은 시스템
- kernel data structures
- 운영체제는 외부 라이브러리를 사용하지 않고 가장 기본적인 형태를 사용함
'운영체제' 카테고리의 다른 글
Chapter 5 - CPU Scheduling (0) | 2019.04.09 |
---|---|
Chapter 4 - Threads(6주차) (0) | 2019.04.09 |
Chapter 2 - 디스크, system call, 운영체제의 구조 (0) | 2019.03.23 |
Chapter 2 - 시스템 구조 (0) | 2019.03.14 |
Chapter 1 - 운영체제가 하는일, 컴퓨터 시스템의 구성, 컴퓨터 시스템 구조 (0) | 2019.03.09 |