[지식창고]/운영체제

[운영체제/OS] 1. OS란 ?

개발새발주발 2023. 4. 5. 00:31
728x90

OS를 위한 컴퓨터구조 기초에 대해서는 5편까지 작성하도록 하고 OS에 대해 본격적인 설명을 해보도록 하겠다 ! 

 

사진 출처 : https://computer-science-student.tistory.com/384

What is Operating System? , OS란 ?  

운영체제는 컴퓨터 시스템의 핵심 요소 중 하나로 여러 애플리케이션과 사용자들의 요구를 조율하여 공정하고 효율적인 방식으로 시스템 자원을 관리한다. 
  1. 운영체제는 사용자와 하드웨어 간의 인터페이스 역할을 한다. 
    → 운영체제는 소프트웨어 개발자가 하드웨어를 직접 다루는 것보다 간편한 가상 머신을 구현한다. 
  2. 운영체제 하드웨어에서 구현되는 표준 서비스(인터페이스)를 제공한다. 
    → 프로세스, CPU스케쥴링, 메모리 관리, 파일 시스템, 네트워킹 등이 포함 

  3. 운영체제는 여러 애플리케이션과 사용자(멀티 프로세스)를 공정하고 효율적인 방식으로 조율한다. 
    → 운영체제 개발의 목표는 기계를 사용하기 편리하고(소프트웨어 엔지니어링 문제), 효율적으로 만드는 것(시스템 엔지니어링 문제) 

 

OS의 역할(비유적 표현)

- A magician : 마술사 

각 사용자에게 전용 컴퓨터와 무한한 메모리 및 CPU 시간의 환상을 제공함 = 우리는 실제로 많은 프로그램을 '정확히 동시에' 돌리고 있다고 생각하지만 운영체제가 하드웨어 자원을 효율적으로 분배하여 여러 프로그램이 동시에 실행될 수 있게 만들어준다. (사람은 알지 못할만큼 빠르게 처리하고 왔다갔다한다는 것 ! 이것은 멀티태스킹에서 더 자세히 배울 예정이다. ) 

 

- A government : 정부 

자원을 효율적이고 공정하게 할당하고, 사용들이 서로 보호하며 안전하고 안전한 통신을 제공한다. 운영체제는 컴퓨터 자원의 사용과 분배를 관리하여 자원 낭비를 최소화하고, 각 사용자의 권한과 보안을 보호한다! 

 

- A parent : 부모 

필요할 때 항상 도움을 주고 절대 고장나지 않으며, 안정적으로 동작하며, 성공적으로 작업을 처리할 수 있도록 지원한다. 

 

- A fast food restaurant : 패스트푸드점

모든 사람들이 필요로 하는 서비스를 제공하며 어디서나 항상 동일하게 작동한다. 

즉, 운영체제는 모근 사용자가 필요로 하는 기본 기능을 제공하고, 각각의 컴퓨터 시스템에서 동일하게 작동하도록 표준화된다. 

 

- A complex system : 복잡한 시스템

운영체제는 하드웨어와 소프트웨어, 다양한 프로그래밍 언어와 데이터 구조, 알고리즘 등이 모~ 두 결합되는 복잡한 시스템이다.

하지만 가능한 ! 

단순하게 유지하여 안정적이고 효율적으로 동작할 수 있도록 노력한다. 

 

 

Why study operating Systems? 

이렇게 효율적이고 좋은 방식인데.. 그럼 개발자로써 개발만 잘하면 되는 우리는 왜 OS를 배워야하죠? 에 대한 내용을 담고 있다. 

 

  1. 추상화(Abstraction) - 사용자들에게 무한한 자원 (CPU 시간, 메모리, 파일 공간)의 환상을 제공하는 방법 
    운영체제는 하드웨어 자원을 효율적으로 분배하여 여러 사용자가 동시에 사용할 수 있도록 한다. 이러한 운영체제의 기능으로 인해 사용자들은 하드웨어 자원의 한계를 인식하지 못하고 무한한 자원을 사용하는 것처럼 느낄 수 있다. 
  2. 시스템 디자인(System design) - 성능과 추상화의 편의성, 운영체제의 성능과 단순성, 하드웨어와 소프트웨어 기능 간의 tradeoff
    운영체제를 개발할 때는 성능과 추상화 편의성, 운영체제의 성능과 단순성, 하드웨어-소프트웨어 간의 tradoff를 공부해야함 !!!!! 
  3. 주요 교차점(Primary intersection point) - 운영체제는 하드웨어, 소프트웨어, 프로그래밍 언어, 데이터 구조, 알고리즘 등이 모두 결합되는 지점이다. 
    → 너네가 공부를 해야하는 이유이면서도 ... 암살암시와도 같은 말이다. 그렇다,, OS에서는 컴퓨터 구조론, C, 네트워크 등 전공생이라면 배웠을만한 많은 과목의 많은 내용이 통합된다. 선수과목이 많고 그만큼 복잡하고 방대한 과목이다. 

  4. 호기심(Curiosity) - 내부 동작 확인 
    운영체제는 소프트웨어 중 가장 복잡한 부분 중 하나이며 다양한 기술과 원리가 사용된다. 배울때는 어렵겠지만 이러한 이유로 운영체제를 공부하면 컴퓨터 시스템의 내부 동작을 더 잘 이해할 수 있으며, 문제 해결에도 더 유용한 방법을 찾을 수 있다. 기업에서 개발자를 뽑을 때, OS과목 수강 여부를 본다는 말도 있다. 이렇듯 OS는 컴퓨터를 다루는 학생들에게 매우매우 중요한 과목이다.. 

 

Modern OS Functionality : 현대 운영체제의 기능

 

1. 동시성 (Concurrency) :

  • 운영체제는 여러 개의 프로세스가 동시에 실행되도록 지원한다. 
  • 프로세스 간 통신을 가능하게 한다. 
  • 프로세스는 상호 배제적으로 어떤 자원을 사용할 지 결정한다. (시간적으로 쪼개진 or 공간적으로 쪼개진)
  • CPU스케쥴링과 같은 방법으로 자원을 효율적으로 관리한다. → ex. CPU 동시 병렬 , 하나의 큰 일을 프로세서가 나눠서 일을 한다! 

2. 메모리 관리 (Memory management)

 

→ 운영체제는 프로세스가 필요로 하는 메모리 공간을 할당하고 이를 효율적으로 관리한다. 또한 가상 메모리를 제공하여 메모리 부족 상황에서도 프로세스를 실행할 수 있도록 한다. (디스크 & 메모리 → 변수들의 값 저장)

 

3. 파일 시스템 (File system)

→ 운영체제는 디스크에 프로그램과 데이터를 저장할 수 있도록 파일 시스템을 지원한다. 파일 시스템은 파일의 생성, 수정, 삭제, 읽기 등을 가능하게 한다 ! 

 

4. 네트워크와 분산 컴퓨팅 (Networks and distributed computing)

→ 운영체제는 네트워크를 통해 여러 컴퓨터가 연결되어 작업을 수행하도록 지원한다. 이를 통해 분산 컴퓨팅 환경에서도 작업을 수행할 수 있다. 

 

5. 보안 및 보호 (Security & protection)

→ 운영체제는 시스템 자원에 대한 접근 권한을 관리하고, 악성 코드나 사용자로부터 시스템을 보호한다. 또한 사용자와 프로세스 간에 상호작용을 통제하여 시스템의 안전성을 보장한다. 


[참고 및 출처]

 

한국항공대학교 「컴퓨터 운영체제」 강의 자료