[TIL] 21.04.26.(Mon)

Ryan (Geonhee) Son·2021년 5월 4일
0

활동 요약

  • CS 기초 3강 수강
    • 운영체제, 프로세스, 프로세서, 파일 관리
    • 데이터베이스, DBMS
  • 활동학습
    • Processor / Process
  • 신규 프로젝트 (은행 창구 매니저) 착수
    • 모둠원 배정 및 그라운드룰 수립
    • 프로젝트 진행 방향 논의

활동 상세

운영체제

컴퓨터는 크게 응용 소프트웨어, 시스템 소프트웨어와 하드웨어로 구성되어 있으며, 운영체제는 컴퓨터의 시스템 소프트웨어의 한 종류입니다.

운영 체제는 사용자와 응용 프로그램, 하드웨어 사이에서 동작하며 응용 프로그램과 하드웨어 사이의 매개 역할을 수행합니다.

운영체제의 종류는 Linux, Windows, iOS, Android 등 다양하게 존재하며 매킨토시 컴퓨터의 경우 macOS를 사용합니다.

목적

이전 컴퓨터는 계산에 특화된 계산기의 용도로 활용되는 경우가 많았기에 범용성이 떨어져도 큰 문제가 없었습니다. 일반 계산, 공학 계산, 탄도학 계산 등 특정 용도에 맞는 컴퓨터를 제작하고 용도에 맞게 사용하면 되었기 때문이죠. 그러나 요즈음에는 컴퓨터가 계산 이외 여러가지 작업을 수행해야할 필요성이 커졌기에 PC, tablet 등 하드웨어와 사용자를 연결시켜줄 소프트웨어가 필요하게 되었습니다.

운영체제의 업무

  1. 시스템 하드웨어 관리
    • 사용자 프로그램의 오류나 잘못된 자원 사용을 감시한다.
    • 입출력 장치 등의 자원에 대한 연산과 제어를 관리한다.
  2. (가상) 시스템 서비스 제공
    • 사용자에게 컴퓨터 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공한다.
  3. 자원 관리
    • 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적으로 할당, 관리하고 보호한다.

프로세스와 프로세서의 관리

컴퓨터가 관리해야할 가장 중요한 자원은 프로세서 (CPU)입니다. 하드디스크 (HDD) 또는 SSD와 같은 보조기억장치에 잠들어 있던 프로그램이 주기억장치로 로드되어 실행된 것을 프로세스라 합니다. 거의 모든 상황에서 동시에 여러가지 프로세스가 동작하기에 CPU에 연산이 집중되는데 이 때 CPU에 프로세스를 효율적으로 할당하는 것이 운영체제의 주요 역할입니다.

프로세스의 상태

한 번에 모든 작업을 CPU가 처리할 수 없기 때문에 프로세스는 아래와 같은 상태를 가집니다. 유사한 이유로 모든 프로세스가 항상 작업 처리 (CPU 점유)를 할 필요가 없기에 필요에 따라 준비-실행-대기 상태가 변경됩니다.

  • 생성
    프로그램이 실행된다 (프로세스가 생성된다).
  • 준비
    CPU에 의해 프로세스가 실행되기를 기다린다.
  • 실행
  • 대기
    어떤 사건이 일어나기를 기다린다.
  • 종료
    프로그램이 종료된다 (프로세스가 종료된다).

동시에 여러가지 작업을 수행해야하므로 한 프로세스가 계속해서 CPU를 점유하고 있을 수 없습니다. 컴퓨터 사용자는 굉장히 빨라 인지하기 어렵지만 다른 프로세스에서 보내는 명령을 수행하고, 그동안 다른 프로세스들을 준비 및 대기 상태로 놓는 스위칭 (switching)을 합니다. 운영체제는 여러가지 프로세스 사이의 스위칭을 할 때 우선순위를 부여하는 스케줄링(scheduling)을 수행합니다.

프로세스 스케줄링

프로세스 스케줄링은 아래를 포함해 수많은 방식이 있습니다.

First-Come First-Served (FCFS)

준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법입니다. 프로세스가 실행된 순서대로 작업을 처리합니다.

Shortest Job First (SJF)

실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법입니다. 평균 대기 시간이 가장 적은 알고리즘으로 알려져 있지만, 실행시간이 긴 프로세스에 밀려 무한 연기 상태에 빠질 수 있습니다.

Round Robin Scheduling

시분할 시스템을 위해 고안된 방식으로 FCFS의 변형 기법입니다. 각 프로세스는 시간 할당량 동안만 실행되며, 완료되지 않으면 다음 프로세스에게 CPU 점유를 넘겨주고 준비상태 큐의 가장 뒤에 배치됩니다. 할당된 시간이 많을수록 FCFS와 비슷해지는 경향이 있는 반면 할당 시간이 적을수록 문맥교환과 오버헤드가 커집니다.

Priority Based Scheduling

프로세스마다 우선순위를 부여하는 기법입니다. 우선순위가 동등한 경우 FCFS 기법으로 할당하며 가장 낮은 우선 순위를 부여받은 프로세스의 무한 연기 상태에 빠질 수 있습니다.

Multi Queue Scheduling

프로세스를 특정 그룹으로 분류할 수 있을 경우, 그룹에 따라 각기 다른 준비단계 큐를 사용하는 기법입니다. 준비상태 큐마다 다른 스케줄링 기법을 적용할 수 있으며, 어느 한 준비상태 큐에 속한 프로세스는 다른 준비상태 큐로 이동할 수 없습니다. 하위 단계 준비 큐에 있는 프로세스를 실행하는 도중이라도 상위 단계 준비상태 큐에 프로세스가 들어오면 상위단계 프로세스에게 CPU를 할당합니다.

주기억장치 관리

주기억장치를 관리하는 것도 운영체제가 할 일입니다. 메모리 공간을 차지하는 프로세스들 간의 메모리 점유를 효율적으로 분배하고, 신규 프로세스가 실행되고자할 때 메모리를 비워주거나 디스크에 메모리 상태를 저장해두었다 이후에 사용할 수 있도록 합니다. 메모리 상태를 디스크에 저장해두었다 사용자가 해당 앱을 사용할 때 디스크에서 다시 불러오는 작업을 스왑(swap)이라 합니다. 반대로 메모리가 여유로운 경우 디스크 대신에 메모리에서 내용을 읽고 쓸 수 있도록 램 디스크를 구성하여 사용할 수도 있습니다.

파일 관리

운영체제는 파일 또한 관리합니다. 응용 프로그램은 보조기억장치에 직접적으로 읽고 쓰는 방식을 알지 못하기 때문에 운영체제를 통해 읽기와 쓰기를 수행합니다.

파일 시스템은 다양한 종류가 있는데, 파일을 읽고 쓰는 방식이 다르다는 것을 의미합니다.

  • Unix
    • Unix File System
  • Linux
    • 확장 파일 시스템, ZFS, XFS, ...
  • macOS
    • HFS, HFS+, AFPS
  • Windows
    • FAT
    • NTFS

커널

운영체제의 가장 핵심이자 뼈대는 커널이라 할 수 있습니다. 보안, 자원관리와 추상화를 담당하고 있으며, Ubuntu, Redhat, Android와 같은 Linux 계열 운영체제는 Linux 커널을 사용하고 있습니다.

데이터베이스

여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합. 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음.

자료구조 vs 데이터베이스

  • 자료구조: 대부분 주기억장치에서 이루어질 내용
  • 데이터베이스: 대부분 보조기억장치에서 이루어질 내용

종류

  • 관계형
  • 키-값형
  • 객체형
  • 문서형
  • 컬럼형

DBMS

데이터베이스가 데이터를 표현하고 관리하는 방법인 반면, DBMS는 데이터들을 실질적으로 관리해주는 소프트웨어를 의미합니다. MySQL, PostgreSQL, SQLite, MariaDB 등이 있으며, DataBase에 접근할 수 있는 기능을 제공하는 소프트웨어, 즉, 데이터베이스계의 운영체제라 할 수 있습니다.

Structured Query Language (SQL)

DBMS를 통해 데이터를 관리하기 위한 구조화된 질의문을 작성하기 위한 언어이며, 관계형 데이터베이스 관리 시스템에서 사용합니다.

활동 학습 - Processor / Process

  • Windows 운영체제는 32bit 버전, 64bit 버전, ARM 버전 등 다양한 버전이 존재합니다. 이 버전은 어떤 것을 의미하며 왜 이렇게 다양한 버전이 존재해야 할까요?
    • CPU가 한 번에 처리할 수 있는 명령어의 크기가 버전마다 다르기 때문에 이에 맞게 운영체제의 구조도 달라져야 하기 때문이다. ARM의 경우에도 32 bit와 64 bit 버전이 있다.
  • 내 매킨토시의 프로세서는 무엇인가요?
    • 2.3 GHz 8-Core Intel Core i9
  • 애플이 새로 출시한 매킨토시 컴퓨터에서 iOS의 애플리케이션을 실행할 수 있는 이유는 무엇일까요?
    • 두 기기 모두 같은 버전의 ARM 프로세서이기 때문이다.
  • 이전의 매킨토시 컴퓨터에서는 불가능했던 이유는 무엇일까요?
    • 다른 버전의 프로세서를 사용했기 때문이다.
  • 앞으로 iOS와 macOS는 통합될까요?
    • 화면 크기에 따라 UX를 달리 제공해야하기에 단기적으로는 통합되지 않을듯.
    • M1와 같이 모바일 기기와 데스크탑/랩탑 프로세서를 공유하여 사용하기 시작하였기에 통합이 가능해짐.
profile
합리적인 해법 찾기를 좋아합니다.

0개의 댓글