[ 운영체제 ] 1. 운영체제의 개요

THIST·2024년 7월 14일
post-thumbnail

1-1. 운영체제란 무엇인가? (What is an Operating System)

세상에는 다양한 OS들이 존재한다.

가까이 있는것부터 비교해보면, 크게 Windows와 Mac이 있을것이다.

그리고 휴대폰에 Android, iOS 이것들 또한 OS이다.

평소에, 주변에서 "운영체제"라는 단어는 많이 들었어도, 그게 정확히 어떠한 용어인지 아는 사람은 많지 않은 것 같아 보인다.

운영체제 OS(Operating System)은 크게 두 Part로 나눌 수 있다고 본다.

Operating 그리고 System.

Operating이란 본래, 운영이라는 뜻으로, 다양한 기계나 장비들을 작동하는것을 의미한다.

System이란, 여러가지 Part들이 모여 하나의 Set을 구성하는것을 의미한다.

즉, 이 두 단어를 합쳐보면 "여러가지 Part들이 모여 하나의 Set을 구성하고, 이러한 Set을 통해 다양한 기계 혹은 장비들을 운영한다" 정도로 해석될 수 있다.


이 그림을 보면 OS(Operating System)이 하드웨어와 Program사이에 있는것을 볼 수 있는데, 왜 그런지 다음과 같은 시나리오들을 살펴보도록 해보자.


1. 개발자들의 특정 장치에 맞는 애플리케이션 개발

  • 문제점: 각 장치의 하드웨어 및 소프트웨어 환경이 다르기 때문에 애플리케이션을 개발하는 데 어려움이 있을 수 있다.

2. 유저들의 다른 장치에서 동일한 애플리케이션 사용

  • 문제점: 장치마다 다른 하드웨어와 운영체제 환경이 존재할 수 있다.

3. 유저들의 여러 애플리케이션 실행

  • 문제점: 여러 애플리케이션이 동시에 실행될 때, CPU, 메모리, 디스크 등의 자원을 효율적으로 관리해주어야 한다.

4. 여러 사용자가 동일한 애플리케이션 실행

  • 문제점: 다수의 사용자가 동일한 애플리케이션을 사용할 때, 한정된 자원을 차지하기 위해 충돌이 발생할 수 있다.

다양한 계층에서 다양한 문제들이 발생하는것을 우리는 볼 수 있다.


운영체제는 이러한 문제들이 발생하지 않도록, 사전에 다음과 같은 일을 수행하고 있다.

이렇듯, OS는 Hardware와 Software 딱 그 중간사이에 위치해서 우리가 더 편히 일을 할 수 있도록, 다양한 기능들을 제공해 준다.

1-2. 운영체제의 주요 역할과 기능 (Major Roles and Functions of Operating Systems)

  1. 하드웨어 관리(Manages a Computer's Hardware)
    --> 하드웨어의 자원 (CPU, 메모리, 디스크, 입출력 장치)등을 관리한다.

  2. 응용 프로그램 지원(Provides Basis for Application Programs)
    --> 응용 프로그램들이 하드웨어와 상호작용할 수 있도록 기본적인 환경을 제공한다.

  3. 사용자 프로그램과 하드웨어 간의 상호작용(Interaction between User Programs and Hardware)
    --> 소프트웨어와 컴퓨터 하드웨어간의 중재자 역할을 수행해준다.

이를 통해,

사용자가 프로그램을 실행하고, 컴퓨터를 쉽게 이용할 수 있게 해주며,

한눈에 보기 쉽도록 다양한 인터페이스 및 기능을 제공해준다.

또한, 이러한 보다 빠르고 편리한 기능을 위해 한정된 자원들을 최대한 효율적으로 사용하여 성능을 최적화 시켜준다.

마지막으로 User Interface에 대해서 알아보도록 하자.

User Operating System Interface는 사용자가 컴퓨터와 어떻게 서로 의사소통할지 만들어진 하나의 매개체이다.

사람들끼리 의사소통할 때, 주로 대화나 펜을 이용해서 서로 대화를 주고 받지 않는가?

컴퓨터에는 크게
CLI(Command Line Interface)
GUI(Graphic User Interface) 두가지로 나뉜다.

CLI에서는 주로 'Shell'이라고 불리는 것을 사용하여 컴퓨터와 의사소통한다.

영화나 드라마를 보면 해커가 검은창을 띄워놓지 않는가?

그것이 바로 'Shell'이라고 하는 인터페이스이다.

반대로, GUI에서는 우리가 주로 사용하는 사용자 친화적 인터페이스로, 한눈에 알아보기 쉽고 접근하기가 쉽다는 것이 가장 큰 장점이다.


이번 시간을 통해, 우리는 OS가 무엇이며 대충 어떠한일을 수행하는지에 대해 추상적으로 배워보는 시간을 가졌다.


우리는 이제 이러한 일을 어떻게 OS가 수행하는지 보다 자세하게 다뤄볼 예정이다.




1. 운영체제의 개요

  • 1-1. 운영체제란 무엇인가? (What is an Operating System?)
  • 1-2. 운영체제의 주요 역할과 기능 (Major Roles and Functions of Operating Systems)

2. 운영체제의 구성 요소 (Components of Operating Systems)

  • 2-1. 커널 (Kernel)
  • 2-2. 파일 시스템 (File System)
  • 2-3. 장치 드라이버 (Device Drivers)
  • 2-4. 사용자 인터페이스 (User Interface)

3. 프로세스 관리 (Process Management)

  • 3-1. 프로세스와 스레드 (Processes and Threads)
  • 3-2. 프로세스 스케줄링 (Process Scheduling)
  • 3-3. 동기화와 통신 (Synchronization and Communication)

4. 메모리 관리 (Memory Management)

  • 4-1. 물리적 메모리와 가상 메모리 (Physical Memory and Virtual Memory)
  • 4-2. 메모리 할당 기법 (Memory Allocation Techniques)
  • 4-3. 페이지 교체 알고리즘 (Page Replacement Algorithms)

5. 파일 시스템 관리 (File System Management)

  • 5-1. 파일 시스템 구조 (File System Structure)
  • 5-2. 파일 할당 방법 (File Allocation Methods)
  • 5-3. 디렉터리 구조와 관리 (Directory Structure and Management)

6. 입출력 시스템 (Input/Output Systems)

  • 6-1. 입출력 하드웨어 (I/O Hardware)
  • 6-2. 입출력 소프트웨어 (I/O Software)
  • 6-3. 입출력 버퍼링과 스풀링 (I/O Buffering and Spooling)

7. 보안과 보호 (Security and Protection)

  • 7-1. 운영체제 보안 기법 (Operating System Security Techniques)
  • 7-2. 사용자 인증과 권한 관리 (User Authentication and Authorization)
  • 7-3. 데이터 보호와 암호화 (Data Protection and Encryption)

8. 가상화 (Virtualization)

  • 8-1. 가상화의 개념과 필요성 (Concept and Necessity of Virtualization)
  • 8-2. 가상 머신과 하이퍼바이저 (Virtual Machines and Hypervisors)
  • 8-3. 컨테이너 기술 (Container Technology)

9. 미래의 운영체제 (Future of Operating Systems)

  • 9-1. 클라우드 운영체제 (Cloud Operating Systems)
  • 9-2. 사물인터넷(IoT) 운영체제 (Internet of Things Operating Systems)
  • 9-3. 분산 운영체제 (Distributed Operating Systems)
profile
하고 싶은 개발을 지향하는 삶을 추구합니다:D

0개의 댓글