[23.03.20] Daily Posting

HeeJun·2023년 3월 20일
1

Operating System

목록 보기
2/9

이 블로그의 목적은 학습한 내용의 정리와 더 나아가 다양한 기술들에 대한 정리와 정보 공유가 목적입니다.

혹시 글의 내용 중 틀린 부분이 있다면 댓글 남겨주세요!!!

Operating System

운영체제란?

먼저 아무런 생각 없이 운영체제(operating system)이란 이름을 보고 떠오르는 것을 생각해 보자!
필자는 처음 든 생각이 "무엇인가"를 운영하는 것인가? 라는 생각이 먼저 들었다.

그럼 이제 생각을 확장해 보자.
우리는 현재 컴퓨터에 관한 공부를 하고 있다.
그렇다면 운영체제는 컴퓨터를 운영하는 놈인가? 라고 생각할 수 있다.

누군가 운영체제가 뭐야! 하고 물었을 때 위에 처럼 대답한다면 완벽하게 맞는 대답은 아니지만 그렇다고 완벽하게 틀린 대답도 아니다.
왜냐하면 정말 큰 범위에서 보았을 때 운영체제는 컴퓨터를 운영하는 놈이 맞다.

이제부터는 운영체제가 좀 더 자세하게 어떠한 일을 하면서 컴퓨터 시스템을 관리하는지 알아보자.

운영체제의 정의를 정리해 보면
아래 그림처럼 응용 프로그램과 하드웨어 사이에 존재하면서
하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스의 역할을 수행하며
응용 프로그램이 작업을 할 수 있도록 환경을 제공하는 프로그램들의 모음이다.

간단히 말해서, 운영체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어다.

대표적인 운영체제의 종류로는
Window OS, Linux, Unix, MacOS, MS-DOS 등이 존재합니다.

운영체제는 쉘(Shell)과 커널(Kernel) 두 가지로 이루어져 있다.
참고로, 쉘과 커널은 단단한 껍질(Shell) 안에 있는 알맹이(Kernel) 같아서 지어진 이름!!

  1. 커널(Kernel)
  • 커널은 하드웨어와 가장 가까이에 있는 일종의 프로그램이다.
    커널은 시스템의 자원(하드웨어)을 관리하는 운영체제의 가장 핵심이 되는 요소!!.
  1. 쉘(Shell)
  • 쉘은 사용자(응용 프로그램)과 커널 사이에 위치하면서 사용자(응용 프로그램)의 명령어를 해석해 커널에게 보내는 역할을 한다.

운영체제는 다양한 역할을 수행한다.

  1. 프로세스 관리
    • 프로세스(Process) & 스레드(Thread)
    • 스케줄링(Scheduling)
    • 동기화(Synchronization)
    • IPC(Inter Process Communication)
  1. 저장장치 관리
    • 메모리 관리
    • 가상 메모리
    • 파일 시스템
  1. 네트워킹
    • TCP/IP
    • 기타 프로토콜(Protocol)
  1. 사용자 관리
    • 계정 관리
    • 접근권한 관리
  1. 디바이스 드라이버
    • 순차접근 장치
    • 임의접근 장치
    • 네트워크 장치

운영체제는 위와 같이 다양한 역할을 수행한다.
각 역할에 대한 간단한 정리를 해보자!

  1. 프로세스 관리
  • 컴퓨터 시스템에서 동작하는 응용 프로그램 관리
  • 이는 프로세서(CPU)를 관리하는 것이라고도 볼 수 있다.
    프로그램은 프로세서가 처리한다. 운영체제가 현재 프로세서를 점유해야 할 프로세스(=메모리에 적재된 프로그램)를 결정하고,
    실제로 프로세서를 프로세스에 할당하는 등 모든 프로세스를 관리하고 제어한다.
  1. 저장장치 관리
  • 1차 저장장치(Main Memory), 2차 저장장치(Hard Disk, NAND Flash Memory) 등을 관리
  • 1차 저장장치(Main Memory)
    • 프로세스에 할당하는 메모리 영역이 할당과 해제
    • 각 메모리 영역 간 침범 방지
    • Main Memory의 효율적인 사용을 위한 가상 메모리 기능
  • 2차 저장장치(HDD, NAND 등)
    • 파일 형식의 데이터 저장
    • 파일 데이터 관리를 위한 파일 시스템 관리
    • FAT, EXT4, NTFS 등의 다양한 파일 시스템 존재
  1. 네트워킹
  • TCP/IP 기반의 인터넷에 연결
  • 응용 프로그램의 네트워크 사용을 위한 네트워크 프로토콜 지원. 현재 상용 OS들은 다양한 네트워크 프로토콜을 지원한다.
    • Protocol & TCP/IP에 대해 모르는 사람을 위해 간단히 설명하자면,
      프로토콜(Protocol)은 일종의 약속이다. "택배를 보낼 때 받는 사람의 주소를 적는다"라는 약속을 통해 택배를 보내는 것처럼
      컴퓨터도 데이터를 보낼 때 프로토콜이라는 약속을 지켜서 통신한다.
    • TCP/IP는 인터넷에서 컴퓨터들이 데이터를 주고 받는데 쓰이는 프로토콜의 모임이다.
  1. 사용자 관리
  • 우리가 사용하는 PC는 여러 사람이 계정을 만들어서 공유할 수 있다.
  • 운영체제는 각 계정을 관리한다. 사용자 간의 프라이버시와 보안을 위해 개인 파일에 대한 접근 제어나
    파일이나 시스템 자원에 접근 권한을 지정할 수 있도록 지원해준다.
  1. 디바이스 드라이버
  • 컴퓨터 시스템에는 다양한 하드웨어가 존재한다. 이들을 운영체제에서 인식하고 관리하게 만들어
    응용 프로그램이 하드웨어를 사용할 수 있게 만들어야 하는데 이를 위해 디바이스 드라이버가 존재한다.
  • 하드웨어 종류가 다양한 만큼, 운영체제 내부의 디바이스 드라이도 다양하게 존재한다. (일상 생활에서 나사의 종류별로 드라이버를 다르게 사용하는 것을 생각!!)
  • 이렇게 다양한 종류의 디바이스 드라이버들을 관리하는 기능 또한 운영체제가 담당한다.

이로써 운영체제에 관한 간단한 내용 정리가 끝났다.

사실 당분간의 CS에 관한 포스팅은 개략적인 내용을 정리하기 위한 것이기에 다소 설명이 부족하거나 넘어간 부분들이 존재할 수도 있다. 그러한 내용은 CS에 관한 개략적인 내용에 대한 정리가 끝난 후 추가적인 포스팅으로 보충할 생각이다.

당장에 Shell과 Kernel만 봐도 System Call, User Mode(User Space)/Kernel Mode(Kernel Space) 등 다양한 내용이 빠져있다.

이러한 내용들은 추후 포스팅을 통해 보충하도록 하겠다.

profile
내가 작성한 코드 한 줄로 누군가를 편하게

0개의 댓글