티스토리 뷰
본 내용은 학교 강의를 통해 개인적으로 공부한 내용입니다. 책은 쉽게 배우는 운영체제(한빛아카데미)를 참고했습니다. 조언은 언제든지 감사합니다 !
운영체제의 등장 배경(필요성)
요즘 컴퓨터에는 당연하고, 모바일 핸드폰이나 냉장고, TV등의 기계들에도 운영체제가 탑재되어 있다. 하지만 처음부터 모든 기계들에 운영체제가 들어있지는 않았다. 최초의 컴퓨터인 에니악에도 수동으로 프로그래밍은 가능했지만 운영체제라는 것은 없었다. 애초에 운영체제는 소프트웨어이기 때문에 하드웨어로만 구성되어 있던 시절에는 존재할 수 없었다.
그러다 점점 컴퓨터의 구성들이 많아지고 처리할 것들이 복잡해 지면서 이러한 복잡한 작업 환경에 규칙이 없으면 기계를 망가뜨릴 수도 있기 때문에 등장한 것이 운영체제다.
이러한 필요로 만들어진 운영체제는 새로운 기능의 추가나 성능의 변경으로 성능 및 효율성 향상이 가능하다. 즉, 프로그래밍이 가능하다.
운영체제의 정의
운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어다.
도식화 해보면 운영체제 ≒ 인터페이스 환경 제공 + 자원 관리 이다.
위의 그림을 간단하게 표현해보면
user(응용 프로그램)
operating system(운영체제)
hardware
이 중에서 다양한 services가 자원 관리를 위한 것들일 수 있고, user interfaces는 운영체제가 services들을 system calls을 거쳐 편리하고 안전하게 이용할 수 있도록 하기 위해 제공하는 인터페이스들이다.
운영체제의 역할
운영체제는 많은 역할을 수행하지만 4개로 간단하게 압축해보면,
자원 관리
자원 보호
하드웨어 인터페이스 제공
사용자 인터페이스 제공
로 요약해 볼 수 있다.
먼저 운영체제는 한정된 자원을 효율적으로 관리할 의무가 있다. 컴퓨터에는 많은 응용프로그램들이 설치될 수 있고 이 응용프로그램들은 한정된 컴퓨터의 자원들을 필요로 하게 된다. 따라서 운영체제가 중간의 입장에서 자원들을 알맞는 순서로 응용프로그램들에게 분배하고 다시 회수하는 작업을 수행한다.
그리고 이 자원들은, 특히 메모리들은 매우매우 중요한 자원이다. 의도치 않게 조금이라도 손실되거나 변형되면 프로그램에 오류가 발생할 수 있고 아에 실행되지 않기도 한다. 이를 악의적인 사용자가 악용할 가능성도 충분히 생긴다. 때문에 운영체제는 미숙한 사용자나 악의적인 사용자로부터 자원을 보호할 의무가 있다.
이를 위해 사용자들이 컴퓨터의 메모리를 직접 접근하는 것을 일절 차단하고 운영체제 스스로 관리한다. 대신 사용자에게는 컴퓨터의 자원들을 사용할 수 있게 제공하는 것이 다양한 인터페이스같은 것들이다.
하드웨어 인터페이스 제공은 마우스, 키보드, 모니터 등을 제조사에 상관없이 사용자가 사용할 수 있게 호환성을 보장하는 역할이다. 제조사는 자신들의 제품을 판매하면 운영체제는 드라이버라는 하드웨어 인터페이스를 설치해 어떤 제품이던지 사용자에게 plug & play 할 수 있게 한다.
이러한 운영체제를 사용자가 편리하게 이용할 수 있도록 사용자 인터페이스 제공도 해야한다. 이 중 우리가 가장 많이 접하는 것이 GUI(Graphical User Interface)다. 컴퓨터를 키면 보이는 화면이 GUI인데, 운영체제마다 조금씩 다른 것을 알 수 있다. 마우스 포인터나 폴더 인터페이스, 작업 표시줄, 스마트폰의 터치스크린 등 다양한 사용자 인터페이스들을 제공한다.
※ 유틸리티 = 운영체제의 작업을 보조하는 소프트웨어
'CS > OS' 카테고리의 다른 글
CPU 스케줄링 (1) | 2019.03.30 |
---|---|
스레드 (0) | 2019.03.26 |
프로세스 메모리 구조, 시스템 호출 (0) | 2019.03.24 |
프로세스 (0) | 2019.03.22 |
Kernel (커널) (0) | 2019.03.10 |
- Total
- Today
- Yesterday
- git merge
- Gradle
- git
- Python Cookbook
- 스프링 테스트
- git branch
- Spring Boot
- 김영환
- Computer_Networking_A_Top-Down_Approach
- 운영체제 반효경
- 방명록 프로젝트
- Spring Data JPA
- 지옥에서 온 git
- 파이썬 for Beginner 솔루션
- 스프링 컨테이너
- 생활코딩 javascript
- 프로그래머스
- JPA
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 파이썬 for Beginner 연습문제
- 쉘 코드
- Spring
- spring mvc
- 선형 회귀
- 패킷 스위칭
- 쉽게 배우는 운영체제
- 스프링
- jsp
- 스프링 mvc
- Thymeleaf
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |