Загружаем каталог…
Загружаем каталог…
컴퓨터를 사용하면서 우리는 운영체제라는 말을 자주 접한다. Windows, macOS, Linux, Android, iOS처럼 익숙한 이름들이 모두 운영체제에 해당한다. 그런데 운영체제는 정확히 어떤 일을 하고 있을까? 이번 글에서는 운영체제가 무엇인지부터 시작해 커널, 사용자 모드와 커널 모드, 시스템 호출 까지 운영체제의 기본 구조를 정리해본다. 1. 운영체제란? 운영체제의 정의 운영체제(OS, Operating System)는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 이다. 쉽게 말하면 운영체제는 응용 프로그램과 하드웨어 사이에서 다리 역할을 하는 프로그램 이라고 볼 수 있다. 프로그램이 실행되려면 CPU, 메모리, 저장장치, 입출력장치 등의 자원이 필요하다. 하지만 여러 프로그램이 동시에 실행된다면 문제가 생긴다. 어떤 프로그램에 CPU를 먼저 사용할 수 있게 할까? 메모리는 얼마나 할당해야 할까? 여러 프로그램이 하나의 입출력장치를 사용하면 어떻게 해야 할까? 저장장치의 파일은 어떻게 관리할까? 운영체제는 이러한 자원들을 관리하면서 프로그램이 정상적으로 실행될 수 있도록 돕는다. 운영체제를 한 나라의 자원을 효율적으로 배분하는 정부 에 비유하면 이해하기 쉽다. 국가가 한정된 자원을 필요한 곳에 배분하듯이, 운영체제도 컴퓨터의 한정된 자원을 여러 프로그램에 적절하게 배분한다. 대표적인 운영체제 Windows macOS Linux Android iOS 운영체제는 어디에서 실행될까? 운영체제는 메모리에서 커널 영역 이라는 특별한 공간에 적재되어 실행된다. 반면 일반적인 응용 프로그램은 사용자 영역 에 적재된다. 운영체제의 핵심적인 부분은 커널 영역에서 실행되고, 일반적인 응용 프로그램은 사용자 영역에서 실행된다고 이해하면 된다. 2. 운영체제는 어떤 일을 할까? 운영체제의 핵심 역할은 컴퓨터의 자원을 관리하는 것이다. 1 메모리 자원 관리 실행 중인 프로그램을 메모리의 빈 공간에 적재하고, 더 이상 사용하지 않는 프로그램을 정리하면서 메모리를 관리한다. 즉, 여러 프로그램이 메모리를 효율적으로 사용할 수 있도록 관리하는 역할이다. 2 CPU 자원 할당 CPU는 한정된 자원이다. 여러 프로그램이 동시에 실행되는 환경에서는 어떤 프로그램을 먼저 실행할지, 얼마나 오랫동안 CPU를 사용할지 결정해야 한다. 운영체제는 CPU 스케줄링 을 통해 이러한 작업을 관리한다. 3 입출력장치 관리 프린터와 같은 입출력장치를 여러 프로그램이 동시에 사용하려고 하면 충돌이 발생할 수 있다. 운영체제는 이러한 장치의 사용 순서를 조정하여 문제가 발생하지 않도록 관리한다. 4 파일 시스템 관리 저장장치에 있는 정보를 파일과 폴더(디렉터리) 단위로 관리한다. 우리가 컴퓨터에서 파일을 만들고, 삭제하고, 폴더에 정리할 수 있는 것도 운영체제의 파일 시스템 관리와 관련되어 있다. 3. 개발자가 운영체제를 알아야 하는 이유 운영체제는 컴퓨터를 사용하는 사람뿐만 아니라 개발자에게도 중요한 개념이다. 하드웨어 조작을 대신해준다 개발자가 프로그램을 만들 때 하드웨어를 직접 제어하는 코드를 모두 작성해야 한다면 매우 복잡해질 것이다. 운영체제가 하드웨어에 접근하고 조작하는 작업을 대신 처리하기 때문에 개발자는 운영체제에서 제공하는 기능을 이용할 수 있다. 문제 해결에 도움이 된다 프로그램을 실행하다 보면 메모리 부족이나 파일 접근 문제처럼 다양한 오류를 만날 수 있다. 운영체제는 하드웨어와 가까운 곳에서 프로그램의 실행을 관리하기 때문에 문제 상황을 감지하고 오류 정보를 제공하기도 한다. 따라서 운영체제의 동작 방식을 이해하면 오류가 발생했을 때 단순히 에러 메시지를 보는 것을 넘어, 왜 그런 문제가 발생했는지 추적하는 데 도움 이 된다. 기술 면접에서도 자주 다뤄진다 운영체제는 개발자가 알아야 할 대표적인 CS 기초 지식 중 하나다. 특히 프로세스, 스레드, 메모리, CPU 스케줄링, 동기화 등의 개념은 이후 다른 CS 개념을 이해하는 데에도 연결된다. 4. 운영체제의 핵심, 커널 운영체제는 매우 규모가 큰 프로그램이다. 그중에서도 운영체제의 핵심적인 서비스를 담당하는 부분을 커널(Kernel) 이라고 한다. 커널은 컴퓨터의 자원에 접근하고 조작하는 기능과 프로그램이 안전하게 실행될 수 있도록 관리하는 기능을 담당한다. 쉽게 표현하면, 운영체제에서 가장 핵심적인 일을 담당하는 부분이 커널이다. 운영체제의 종류는 다양하지만, 운영체제의 핵심적인 역할을 담당하는 커널의 기능은 서로 비슷한 부분이 많다. 그래서 전공 서적에서는 운영체제와 커널을 거의 같은 의미로 사용하는 경우도 있다. 5. 사용자와 컴퓨터를 연결하는 UI 운영체제에는 사용자와 컴퓨터가 상호작용할 수 있도록 하는 사용자 인터페이스(UI) 도 존재한다. UI는 크게 두 가지 방식으로 생각할 수 있다. GUI GUI(Graphical User Interface) 는 아이콘이나 마우스 등을 이용해 컴퓨터와 상호작용하는 방식이다. 우리가 평소 Windows나 macOS를 사용할 때 보는 화면이 대표적인 예다. CLI CLI(Command Line Interface) 는 명령어를 직접 입력하여 컴퓨터에 작업을 요청하는 방식이다. 터미널이나 명령 프롬프트를 사용하는 것이 대표적인 예다. GUI → 아이콘, 창, 마우스 등을 이용 CLI → 명령어를 직접 입력 여기서 한 가지 기억해야 할 점이 있다. UI는 운영체제에 포함될 수 있지만, 커널 그 자체는 아니다. 커널은 운영체제의 핵심 기능을 담당하는 부분이고, UI는 사용자가 운영체제와 상호작용할 수 있도록 하는 통로라고 이해하면 된다. 6. 사용자 모드와 커널 모드 운영체제를 이해할 때 중요한 개념 중 하나가 이중 모드 다. 이중 모드란? CPU가 명령어를 실행하는 모드를 크게 사용자 모드 커널 모드 로 구분하는 방식이다. 이렇게 모드를 구분하는 이유는 응용 프로그램이 컴퓨터의 모든 자원에 마음대로 접근하지 못하도록 하기 위해서 다. 사용자 모드 사용자 모드에서는 운영체제의 서비스를 제한적으로 이용할 수 있다. 커널 영역의 코드를 직접 실행할 수 없다. 시스템의 자원에 직접 접근할 수 없다. 즉, 일반적인 응용 프로그램은 사용자 모드에서 실행되며 중요한 자원에 마음대로 접근할 수 없다. 커널 모드 커널 모드에서는 운영체제의 서비스를 제공받을 수 있다. 또한 자원에 접근하는 것을 비롯해 사용자 모드보다 더 많은 명령을 실행할 수 있다. 정리하면 다음과 같다. 구분 사용자 모드 커널 모드 커널 영역 코드 실행 불가능 가능 자원에 대한 접근 제한됨 가능 목적 일반적인 프로그램 실행 운영체제의 핵심 기능 수행 현재 CPU가 어떤 모드에서 실행되고 있는지는 CPU 내부의 플래그 레지스터를 통해 확인할 수 있다. 7. 시스템 호출(System Call) 그렇다면 사용자 모드에서 실행되는 프로그램은 운영체제의 기능을 어떻게 사용할까? 여기서 등장하는 것이 시스템 호출(System Call) 이다. 응용 프로그램이 운영체제의 서비스를 이용하려면 시스템 호출을 통해 운영체제에 요청한다. 즉, 응용 프로그램 ↓ 사용자 모드 ↓ 시스템 호출 ↓ 커널 모드 ↓ 운영체제 기능 수행 ↓ 사용자 프로그램으로 복귀 와 같은 흐름으로 이해할 수 있다. 시스템 호출은 커널 모드로 전환하여 운영체제의 서비스를 요청하기 위해 호출하는 것 이며, 일종의 소프트웨어 인터럽트라고 볼 수 있다. 예를 들어 프로그램이 파일을 읽거나 저장장치에 접근하는 등의 작업을 운영체제에 요청할 때 시스템 호출이 사용될 수 있다. 8. 운영체제가 제공하는 핵심 서비스 지금까지 내용을 조금 더 넓게 보면 운영체제의 핵심 서비스는 크게 세 가지로 정리할 수 있다. 프로세스 관리 운영체제는 실행 중인 프로그램인 프로세스 를 관리한다. 수많은 프로세스가 생성되고 실행되고 종료되기 때문에 운영체제는 이들을 체계적으로 관리해야 한다. 여기에는 다음과 같은 내용이 포함된다. 프로세스와 스레드 관리 프로세스 동기화 교착 상태 해결 자원 접근 및 할당 운영체제는 다양한 컴퓨터 자원을 관리한다. CPU 메모리 입출력장치 예를 들어 CPU를 어떤 프로세스에 먼저 할당할지 결정하는 것이 CPU 스케줄링이다. 파일 시스템 관리 저장장치에 있는 정보를 파일이라는 단위로 관리하고, 파일을 폴더(디렉터리) 단위로 묶어 관리한다. 마무리 운영체제를 처음 공부하면 용어가 많아서 어렵게 느껴질 수 있다. 하지만 핵심을 하나로 정리하면 조금 단순해진다. 운영체제는 프로그램이 컴퓨터의 자원을 안전하고 효율적으로 사용할 수 있도록 관리하는 프로그램이다. 그리고 그 중심에는 커널 이 있다. 응용 프로그램은 사용자 모드에서 실행되고, 운영체제의 기능이 필요할 때 시스템 호출 을 통해 커널에 요청한다. 응용 프로그램 ↓ 사용자 모드 ↓ 시스템 호출 ↓ 커널 ↓ CPU · 메모리 · 입출력장치 · 파일 시스템 관리 다음 글에서는 여기서 한 단계 더 들어가서, 운영체제가 실제로 프로그램을 어떻게 관리하는지 알아본다. 다음 주제는 프로세스와 스레드 다.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
운영체제란 무엇인가? — 커널, 이중 모드, 시스템 호출까지. 컴퓨터를 사용하면서 우리는 운영체제라는 말을 자주 접한다. Windows, macOS, Linux, Android, iOS처럼 익숙한 이름들이 모두 운영체제에 해당한다. 그런데 운영체제는 정확히 어떤 일을 하고 있을까? 이번 글에서는 운영체제가 무엇인지부터 시작해 커널, 사용자 모드와 커널 모드, 시스템 호출 까지 운영체제의 기본 구조를 정리해본다. 1. 운영체제란? 운영체제의 정의 운영체제(OS, Operating System)는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 이다. 쉽게 말하면 운영체제는 응용 프로그램과 하드웨어 사이에서 다리 역할을 하는 프로그램 이라고 볼 수 있다.…
Открыть источник