일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트
- 리액트 예제
- 자스민
- 호키도키
- 힛잇
- hokidoki
- SWIFT
- 계명대 이종호
- queue
- 리액트
- 개발
- 개발자
- hokeys
- jest
- 자료구조
- 자바스크립트 자료구조
- 스벨트
- data structure
- react
- IOS
- 계명대
- 비동기
- 호키스
- TDD
- 이종호
- HTML
- Svelte
- javascript
- Hitit
- 스위프트
- Today
- Total
Dog foot print
[예습하는 OS] OS 훑어보기 본문
운영체제 (OS)란
컴퓨터 사용자들은 복잡한 하드웨어의 제어 보다는 컴퓨터 응용프로그램으로 문제를 해결하는 것에 더 관심있기에, 복잡한 컴퓨터 자원을 할당하는 무언가가 컴퓨터 사용자들의 소프트 웨어 활용을 도와야 한다. 이것이 운영체제이다. Operating System 줄여서 OS라고 불리는 운영체제는 우리가 흔히들 쓰는 맥OS, 윈도우OS, 리눅스OS등이 있는데, 이 OS들은 사용자가 컴퓨터를 쉽게 사용 할 수 있도록 하드웨어(자원)을 관리하고, 응용프로그램을 실행할 수 있도록 기반 환경을 제공한다.
운영체제의 역할
- OS는 시스템을 운영하여 하드웨어 , 소프트웨어 데이터를 적절하게 사용할 수 있도록 제어한다.
- 컴퓨터가 문제를 해결하는 데 필요한 자원(프로세서 시간, 메모리 공간, 파일 저장 공간, 입출력장치등)을 할당하는 업무를 한다.
- 프로그램간 자원의 충돌시 자원을 어떻게 할당할 지 결정한다.
- 입출력장치를 동작시키고 통제하는 역할을 한다.
운영체제는 위와 같은 역할을 하기 위해서, 다음과 같은 기능을 제공한다.
- 하드웨어와 사용자 간의 인터페이스를 정의한다. (사용자가 하드웨어에 접근하여 변경할 수 있도록 사용자에게 방법을 제시한다.)
- 사용자들이 하드웨어를 공동으로 사용할 수 있도록 해준다.
- 사용자들이 데이터를 공유할 수 있도록 해준다.
- 사용자 간 자원 할당자 역할을 수행한다.
- 입출력 보조 역할을 한다.
- 오류를 처리한다.
메모리관리
메인 메모리는 프로세서(cpu)가 직접 주소로 지정할 수 있는 유일한 기억장치이다. 프로세서가 처리를 위해 보조 기억장치에서 가져온 데이터는 메인 메모리에 적재되어야한다. 이떄 프로세서 이용률과 컴퓨터 응답속도를 높이려면 사용자가 메모리에 프로그램을 몇 개 저장하고 있어야 하는데, 이를 위한 다양한 메모리 관리 기법이 존재한다. 운영체제는 메인 메모리를 관리하기 위해 다음 기능을 한다.
- 메모리의 어느 부분이 사용되고 어느 프로세스가 사용하는 지를 점검
- 저장 공간에 어떤 프로세스를 저장할 지를 결정
- 기억공간을 할당하고 회수하는 방법을 결정
다양한 메모리 관리 기법은 지역성의 원리를 이용하여, 인출한 데이터 혹은 명령어 근처에 있는 데이터가 자주 사용되는 것을 이용하여, 인출한 데이터 근처에 있는 데이터를 블럭단위로 메모리에 적재시키는 것도 한 예라고 볼 수 있다.
보조기억관리 장치
메인 메모리(ram)은 휘발성의 특징을 가지고 있고, 비트당 가격이 높아 필요한 데이터를 ram에 영구히 보관 할 수 없다. 그렇기에 ssd 혹은 HD를 이용하여, 데이터를 보관한 후 필요한 처리에 필요한 데이터를 보조기억장치에서 인출한다. OS는 디스크관리를 위해 다음 기능을 한다.
- 비어 있는 공간 관리
- 저장 공간 할당
- 디스크 스케줄링
프로세스 관리
프로세스란 ? 하나의 실행되는 프로그램을 의미한다. 프로세서와 이름이 비슷하여 헷갈리는 경우가 있으니, 조심하자.
OS는 이런 프로세스가 업무를 수행하기 위한 프로세서(CPU) 점유, 메모리, 파일, 입출력 장치 같은 자원을 할당한다. 자원은 프로세스가 생성될 때 제공될 수 도 있고, 실행 중에 할당될 수 도 있다.
운영체제는 프로세스관리를 위해 다음 기능을 담당한다.
- 프로세스와 스레드 스케줄링
- 사용자와 시스템 프로세스 생성과 제거
- 프로세스의 중지와 재수행
- 프로세스 동기화를 위한 기법 제공(여러 프로세스가 한 프로그램을 이룰 수 있다.)
- 프로세스 통신을 위한 기법 제공 (서버 -> DB)
- 교착상태를 방지하는 기법 제공
장치관리
운영체제의 중요 기능 중 하나는 사용자가 특정 장치를 세부적이고 복잡한 기계로 느끼지 않고 포괄적 기계로 인식하게 하여 장치의 특성을 숨기는 것이다.
파일 관리
파일 관리는 운영체제가 가장 많이 수행하는 기능이다. OS는 HD나 SSD같은 대용량 저장장치를 관리함으로써 파일의 추상적인 개념을 운영하고, 파일을 쉽게 사용하기 위해 보통 디렉터리로 구성한다. 운영체제는 파일 관리를 위해 다음 기능을 제공한다.
- 파일 생성과 제거
- 디렉터리 생성과 삭제
- 보조기억장치에 있는 파일의 맵핑
- 안전한 저장 매체에 파일 저장
운영체제의 목적
운영체제가 발전한 목적은 당연 사용자의 편의를 위함이 그 첫번째이며, 적은 자원으로 전체 시스템의 성능을 향상시키는 것이 두번째 일 것이다.
첫번째 목적인 편리성은 macOS나 window에서도 볼 수 있듯이, gui환경을 제공함으로써 사용자가 더욱 편리하게 사용가능 한것들이 그 예시일 것이다. 그 밖에도, macOS의 사이드카, 다크모드 같은 것들은 사용자의 편리성을 위해 더욱 발전 하였다.
운영체제는 자원(저장공간, 프로세서 클럭 등)을 효과적으로 사용하기 위해 각 프로그램을 유기적으로 결합하여 시스템 전체 성능을 향상시키는 방향으로 설계된다. 시스템 성능은 처리능력, 신뢰도, 응답시간, 사용 가능도 같은 요소가 결정짓는다.
'컴퓨터 구조' 카테고리의 다른 글
[예습하는 OS] 스레드 (0) | 2020.02.08 |
---|---|
[예습하는 OS] 프로세스 기초 (0) | 2020.02.02 |
[C-Architecture]인터럽트 (0) | 2019.09.29 |
[C-Architecture] cpu의 내부구성 요소 (0) | 2019.09.23 |
[C-Architecture] 컴퓨터의 기능과 발전 (0) | 2019.09.12 |