Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 싸피 면접 후기
- 다익스트라
- 세마포어
- 뮤텍스란?
- 플로이드 워셜
- 다익스트라 알고리즘
- floyd-warshall
- 프록시서버
- 세마포어와 뮤텍스
- Synchronization
- 싸피 합격
- Proxy
- 삼성 청년 SW 아카데미
- 뮤텍스
- Dijkstra Algorithm
- 세마포어란?
- Proxy Server
- 서버 호스팅
- 최단 경로
- 세마포어와 뮤텍스의 차이
- SSAFY
- 플로이드 와샬
- 웹 호스팅
- 동기화
- 호스팅이란?
- 클라우드 서버
- 싸피
- 호스팅
- 프록시
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
운영체제의 개요 본문
1. 운영체제의 개념
1-1 운영체제의 정의
- 컴퓨터를 시스템의 각종 하드웨어적인 자원과 소프트웨어적인 자원을 효율적으로 운영, 관리함으로써 사용자가 시스템을 이용하는데 편리함을 제공하는 시스템 소프트웨어이다.
- 운영체제는 소프트웨어이며 여러가지 프로그램을 가지고 있으며 사용자가 컴퓨터 사용을 쉽게 하도록 도와주는 역할을 한다.
1-2 운영체제의 목적
- 사용자 측면 : 사용자가 프로그램을 편리하고 효율적으로 수행할 수 있는 GUI 인터페이스 환경 제공
- 시스템 측면
- 처리 능력(throughput) 증대 : 주어진 시간 내에서 컴퓨터 시스템이 처리할 수 있는 작업의 양
- 응답 시간(turn-around-time) 단축 : 특정 작업이 시작되어 종료될때까지의 사용 시간
- 사용 가능도(availability) 증대 : 컴퓨터 시스템 내의 한정된 자원을 신속하고 충분히 지원해줄 수 있는 정도
- 신뢰도(reliability) 향상 : 사용 도중 발생하는 내부, 외부적인 오류 없이 정확하게 동작 가능
1-3 운영체제의 역할
- 사용자와 시스템간의 인터페이스 정의
- 사용자들 간 하드웨어 및 자원 공동 사용
- 자원의 효과적인 운영을 위한 스케줄링
- 입출력에 대한 보조 역할
- 오류 처리 수행
- 병렬 수행을 위한 편의 제공
- 보안 및 동신 관리
2. 운영체제의 종류
- 싱글 태스킹 운영 체제 : 하나의 프로그램만 실행할 수 있는 운영체제
- 멀티태스킹 운영 체제 : 하나 이상의 프로그램이 동시에 실행할 수 있는 운영 체제 ( 시분할을 통해 가능 )
- 단일 사용자 운영 체제 : 사용자 구별이 없으나 여러 프로그램이 나란히 실행하는 것은 허용
- 다중 사용자 운영 체제 : 멀티태스킹의 기본 개념을 확장하며, 여러 사용자가 동시에 시스템과 상호 작용할 수 있게 한다.
- 분산 운영 체제 : 분산된 컴퓨터 그룹을 관리하여 하나의 컴퓨터인 것처럼 보이게 해 준다. 하나의 그룹에 속하는 컴퓨터들이 협업을 할 때 분산 시스템을 형성한다.
- 판형 운영 체제 : 가상화와 클라우드 컴퓨팅 관리에 사용되며, 데이터 웨어하우스 환경에서 흔히 볼 수 있다.
- 임베디드 운영 체제 : 임베디드 컴퓨터 시스템에서 사용할 수 있게 설계된 운영체제
- 실시간 운영 체제 : 특정한 짧은 시간 내에 이벤트나 데이터의 처리를 보증하는 운영체제, 싱글 태스킹일 수도 있고, 멀티태스킹일 수도 있으며 멀티태스킹의 경우 특수한 스케줄링 알고리즘을 사용
3. 운영체제의 기능
3-1 사용자 인터페이스
- CLI(Command line interface) : 특수한 프로그램인 셸(Shell)이라는 것이 존재하며, 셸은 조개껍데기란 의미를 가지는데 즉, 내부에 커널을 감싸고 있고 사용자 및 응용프로그램이 셸을 이용해 커널을 제어
- GUI(Graphical user interface) : 직접 명령어를 입력하는 CLI 방식이 아닌 마우스를 이용해 메뉴 시스템 (=아이콘)을 사용. 직관적이고 쉽다는 것이 장점! 윈도가 성장하게 된 결정적인 계기
3-2 I/O 연산
- 1단계 - CPU에서 유저프로세스 실행 중이며, I/O는 요청 -> 전송 -> 전송완료되면 인터럽트를 발생시킨다.
- 2단계 - 인터럽트가 발생하면 CPU는 하던일을 그만두고 저장한 다음 인터럽트 서비스 루틴을 실행한다.
- 3단계 - 처리가 긑나면 다시 하던 일을 재개한다.
3-3 시스템 콜 (System Call)
사용자가 운영체제 내부로 서비스를 받기 위해 안으로 들어가는 절차. 사용자 프로그램이 하기 어려운 일을 운영체제에게 부탁하기 위해 시스템 콜을 호출한다.
- 운영체제가 제공하는 서비스 프로그램의 인터페이스
- c, c++과 같은 고급언어로 주로 개발
- 대부분의 프로그램은 API를 써서 시스템 콜을 호출
- win32 api, posix API, JAVA API 등이 존재한다.
Copy라는 명령에 대해 시스템이 어떻게 동작하는지 알아보자!
- 입력 파일 이름과 출력 파일 이름을 획득
- 입력 파일을 연다. (단, 입력파일이 없으면 비정상 종료)
- 출력 파일 생성(단, 출력 파일이 이미 존재하는 경우 중단시키거나 삭제한 후 새로운 파일을 생성하거나, 대체하는 등의 동작을 수행)
- 반복문 실행(입력파일로 읽고 출력 파일에다가 씀)
- 반복문이 끝나면 출력파일 닫고 완료 메시지를 출력
- 정상 종료
Copy 명령어 하나가 엄청 많은 system call로 이루어져 있다는 사실!
3-4 프로세스 제어(수행)
- 프로세스를 생성하고 CPU에 할당하고 제어하는 과정을 스케줄링이라고 한다.
- 운영체제마다 스케줄링 기법이 다르며 자세하게 보도록 한다! 여기서는 생략
3-5 시스템 서비스(시스템 프로그램)
- 운영체제는 알려진 프로그램의 개발과 실행을 위해 좀 더 편리한 환경을 구축하도록 도움을 주는 시스템 유틸리티(System Utility) 즉! 시스템 프로그램을 제공한다.
- 윈도의 메모장, 그림판, 계산기 등이 운영체제 안에 포함된 시스템 프로그램이라고 볼 수 있다.
3-6 그외
- 파일 관리, 장치 관리, 정보 유지, 통신, 보호 등
커널(kernel)
- 커널(kernel)은 핵이란 이름대로 운영 체제에서 가장 핵심이 되는 프로그램이다.
- 안드로이드를 리눅스로 취급하는 이유가 바로 이 때문이다. 안드로이드의 커널이 바로 리눅스 커널이기 때문.
- 커널은 드라이버를 이용해서 CPU나 그래픽카드와 같은 하드웨어를 제어하고 여러 응용프로그램들이 갖가지 다른 하드웨어 위에서 돌아가도록 호환성을 보장하기 위해 API를 제공한다.
- 예를 들면 웹 브라우저가 화면에 점을 찍고 싶다면 커널에서 제공하는 점을 찍는 함수를 호출하고, 커널이 드라이버를 참조해서 그래픽카드에 명령해 점을 찍는 것이다.
쉘(shell)
- 사용자 입장에서 가장 크게 느껴지는 프로그램은 쉘(shell)이다.
- 리눅스에서는 bash, bsh, csh와 같은 프로그램들이 해당되고, 윈도에서는 cmd.exe(CLI)가 이에 해당된다.
- 사용자가 입력한 명령어를 해석하여 커널에게 보내면 커널이 수행하고 그 결과를 전송해서 다시 쉘을 통해 사용자에게 보여준다.
출처
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 동기화 Synchronization , Race condition (0) | 2021.04.24 |
---|---|
스케줄러의 종류(장기스케줄러, 중기스케줄러, 단기스케줄러) (0) | 2021.04.24 |
교착상태(DeadLock)가 무엇인가? (0) | 2021.04.23 |
운영체제의 CPU 스케줄링 (0) | 2021.04.22 |
프로세스와 스레드의 차이 (0) | 2021.04.21 |
Comments