일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DirectX 12
- OS
- 병행성
- 다이나믹 프로그래밍
- 그리디알고리즘
- 렌더링 파이프라인
- 다이나믹프로그래밍
- 자료구조
- codility
- 운영체제
- 컨디션 변수
- 스케줄링
- 프로그래머스
- 파일시스템 구현
- 락
- 영속성
- Direct12
- 백준
- 멀티프로세서
- I/O장치
- 디자인패턴
- 알고리즘
- 동적계획법
- 병행성 관련 오류
- DirectX12
- 타입 객체
- directx
- 쓰레드
- 그리디 알고리즘
- 멀티쓰레드
- Today
- Total
기록공간
1장. 운영체제의 개요 본문
운영체제(Operating System)를 들어가기 전에 왜 필요한지에 대해서 알아야 할 것이다.
운영체제를 알아햐 하는 이유
바로 좋은 프로그래머가 되기 위해서이다. 좋은 프로그래머는 자기가 만든 프로그램이 컴퓨터에서 어떻게 수행되는지를 아는 것이다.
그러면 궁금증이 생길 것이다. "그냥 구현만 잘하면 되지 그딴 것을 왜 알아야 하는가?"라고 말이다. 왜 알아야 하는지에 대해서는 두 가지로 설명할 수 있다.
첫 번째로 속도가 느리거나, 이상한 버그가 발생했을 때 대처가 가능하다. 보통 개발 상황에서는 느끼기 힘들 수도 있지만, 시스템 콜이 많이 발생하는 프로그램을 개발한다고 했을 때에는 확실히 운영체제가 도움이 될 수 있다. 시스템 콜은 운영체제에서 담당하기 때문이다. 나는 네트워크 프로그래밍을 할 때 이런 점을 많이 깨닫게 되었다. 네트워크 통신을 위한 시스템 콜을 많이 써봤고 잘못된 사용으로 속도가 크게 느려지는 현상을 경험해봤기 때문이다.
두 번째는 프로그램을 만들기 전에 난이도, 비용, 성능을 예측할 수 있다. 이 능력은 나중에 시니어 프로그래머가 되기 위해서는 필수이다.
아 그리고 한 가지 빼먹은 사실이 있는데, 대부분의 회사가 면접, 시험 필수과목으로 운영체제를 채택하고 있다. 필수과목에 프로그래밍 언어, 자료구조, 등이 같이 포함되어 있다는 것으로 유추했을 때 운영체제가 얼마나 중요한 것인지를 알 수 있다. 나중에 회사에 입사해서도 필수과목들을 잘 아는 사람과 모르는 사람의 격차를 경험해볼 수 있을 것이다.
개요
운영체제가 전반적으로 어떤 작업들을 하며, 그 작업을 통해 사용자는 어떤 이점을 얻는지에 대해서 개요를 통해 알아보고자 한다.
운영체제가 하는 일
운영체제는 사용자가 컴퓨터를 쉽게 사용할 수 있도록 해준다. 어떻게 쉽게 사용할 수 있게 해 주는지 알아보자.
우선 프로그램을 쉽게 실행시킬 수 있게 도와준다. 운영체제는 프로그램 실행 시 필요한 하드웨어 단에서의 모든 저수준의 작업들을 대신해준다. 그리고 프로그램 간의 메모리를 공동으로 사용하여 메모리를 효율적으로 관리해준다. 그리고 하드웨어와의 상호작용 기능을 제공한다. RAM, CPU, 하드디스크처럼 컴퓨터의 중추가 되는 하드웨어뿐만 아니라 키보드, 마우스, 프린터와 같은 하드웨어들도 운영체제가 없으면 사용하기 힘들거나 아예 사용할 수 없다.
위와 같은 일을 하는 소프트웨어를 우리는 운영체제라고 부른다. 컴퓨터 사용에 필요한 대부분의 저수준 작업들을 이 소프트웨어가 대신해주기 때문에 우리는 컴퓨터를 편하게 쓸 수 있는 것이다.
가상화(Virtualization)
가상화는 실제(Physical) 자원을 사용하기 쉽도록 가공해서 제공하는 것을 뜻한다. 여기서의 실제 자원은 CPU, 메모리, 디스크와 같은 하드웨어를 말한다. 실제 자원을 날 것으로 컨트롤하는 것은 너무 어렵기 때문에, 그것을 운영체제가 대신해준다.
시스템 콜(System Call)
가상화와 같은 어려운 작업들을 쉽게 사용할 수 있도록 운영체제에서 제공하는 간단한 표준 API(Application Programming Interface)이다. 사용자는 이 API를 이용하여 운영체제에서 제공하는 다양한 작업들을 손쉽게 할 수 있다.
자원 관리자(Resource Manager)
운영체제는 여러 개의 프로그램을 동시에 실행할 때 자원(예를 들면 물리적인 메모리)의 효율적인 배분과 공유, 재사용을 담당한다. 이를 통해 사용자는 여러 프로그램을 무리 없이 실행시킬 수 있다.
운영체제가 어떤 작업들을 하며 그 작업들이 주는 이점이 무엇인지 간략하게 살펴보았다. 본격적으로 들어가기에 앞서서 운영체제의 중요 작업 세 가지를 개요 정도로 알고 가보도록 하겠다.
'OS' 카테고리의 다른 글
2장. 가상화 (0) | 2020.02.07 |
---|---|
1-4장. 운영체제 개요 - 설계 목표와 역사 (0) | 2020.02.04 |
1-3장. 운영체제 개요 - 영속성 (2) | 2020.02.04 |
1-2장. 운영체제 개요 - 병행성 (0) | 2020.02.04 |
1-1장. 운영체제 개요 - CPU 가상화 (0) | 2020.02.04 |