210426 Mon

Sunny·2021년 5월 1일
0

Today I Learned

목록 보기
40/88

운영체제, 데이터베이스

운영체제란 시스템 소프트웨어에 속하는 하나의 소프트웨어다.
운영체제는 응용 프로그램과 하드웨어의 중간에 위치해서 매개체 역할을 하는데 중점을 둠.

운영체제의 종류?
Linux, macOS, Windows, iOS, Android, Unix 등

운영체제의 목적?
운영체제란 소프트웨어는 왜 탄생하게 되었을까?

예전에 컴퓨터라고 한다면 수학 계산, 공학 계산 등 이런 계산에 특화된 기계였기 때문에 범용성이 필요가 없었음.
컴퓨터 하나를 구성한다고 치면
이건 꼭 이 계산을 위한 컴퓨터다 이렇게 고안이 돼었음
so 다른 일 신경쓰지 않아도 됐었음

요즘에는 다양한 종류의 컴퓨터가 나오게 됐고
여러개의 일들 처리해야 할 필요성 생김
다양한 종류의 하드웨어에서 사용자와 어떤 연결지어줄 고리들이 필요하게 됨!

다양한 하드웨어에서 범용적으로 쓰일 수 있는 그런 매개체 소프트웨어가 필요하게 됨. 그래서 운영체제가 탄생하게 됨!

  • macOS는 Unix의 전통을 이어 받음
  • 우리가 눈여겨 볼 내용은 "자원관리"

실행중인 프로그램 = 프로세스
(한번에 여러가지 프로세스가 실행)
CPU에 연산이 몰리게 돼있음
운영체제는 이 프로세스를 갖다가 중앙처리 장치에 얼마나 효율적으로 할당하고, 배분할 것인가? 이게 중요한 역할!

프로세스가 생성된다
= 프로그램이 실행된다

중앙처리장치에 의해 프로세스가 실행되기를 기다린다
= 메모리에 올라갔다

싸이클을 도는 이유?
하나의 프로세스가 계속 일처리를 필요로 하는건 아님
e.g. 음악을 재생하다가 끊기면 사용자가 다시 재생을 클릭할 때까지 대기를 한다거나

실행 버튼을 눌렀다 (= 이벤트 발생) 그러면
필요한 리소스 갖춰질 때까지 대기

CPU의 실행을 하고 준비하고 그런 싸이클을
프로세스는 계속 겪게 될 것이다

시분할 시스템 이용
= 시간을 분할해서 쓰게 된다

하나의 프로세서를 여러개의 프로세스들이 점유를 해야 함
역할을 수행하게 만들어줘야 하기 때문에
OS가 그런 교통정리를 해줌

FCFS (First Come First Served)

  • 준비 상태 큐에 도착한 순서에 따라 차례대로 CPU를 할당

SJF (Shortest Job First)

  • 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당
  • 평균 대기시간이 가장 적은 알고리즘
  • 실행시간이 긴 프로세스에 밀려 무한 연기상태 발생 가능

예시) 은행 입출금 시간이 짧게 걸림

대출 업무 시간이 오래 걸림

대출 업무 원하는 사람이 먼저 왔어도 늦게 처리함

짧게 걸리는 사람 일을 먼저 처리할 수 있게!

Round Robin Scheduling

  • 시분할 시스템을 위해 고안된 방식
  • FCFS (First Come First Served) 기법을 변형
  • 각 프로세스는 시간 할당량 동안만 실행
  • 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치
  • 할당된 시간이 클수록 FCFS와 비슷해짐
  • 할당시간이 작을 수록 문맥교환과 오버헤드가 자주 발생

Priority Based Scheduling

  • 프로세스마다 우선순위를 부여
  • 우선순위가 동일한 경우 FCFS 기법으로 할당
  • 가장 낮은 순위를 부여받은 프로세스의 무한 연기 발생가능

예시) 은행 VIP에게 일반 고객보다 우선순위 부여

Multi Queue Scheduling

  • 프로세스를 특정 그룹으로 분류할 수 있는 경우 그룹에 따라 각기 다른 준비단계 큐 사용
  • 준비상태 큐 마다 다른 스케줄링 기법 사용 가능
  • 다른 준비상태 큐로 이동 불가
  • 하위단계 준비 큐에 있는 프로세스를 실행하는 도중이라도 상위 단계 준비상태 큐에 프로세스가 들어오면 상위단계 프로세스에게 CPU를 할당

예시) 은행 - 입출금 대기열 따로, 대출 대기열 따로 만듦

주기억장치 관리

  • 단순 관리
  • 가상 메모리
    → 보조기억장치를 주기억장치처럼 활용
    메모리를 어떻게 효율적으로 쓰고 비워줄지? 하는 역할 수행

Swap이란?

(= 가상 메모리 영역)
프로세스를 실행해놨지만
사용자가 안 쓰는 것 같다 싶으면
점유하고 있던 메모리를 디스크에 잠깐 저장해놨다가
사용자가 그 앱을 앞으로 끌어오게 되면
디스크에서 메모리로 다시 불러옴
예시) 작업 관리자 swap 메모리

운영체제마다 파일을 관리하는 시스템이 전혀 다 다름
운영체제에게 어느 디렉토리에 저장하고 싶습니다
→ 그 내용을 운영체제가 가져다가 관리하면서 씀

도서관 = 디스크
사서 = 운영체제

어느 섹션에 넣어야 하는지?
사서는 그 규칙들을 다 알고 있음
쉽게 책을 가져다 놓을 수 있음
외부에 있는 사람들은 안에 있는 시스템이 어떻게 돌아가는지 모름
사서에게 이 책 꽂아다주세요, 이 책 주세요 요청

멀티 코어/ 멀티 태스킹

멀티 태스킹: 한 번에 여러가지 작업을 하는 것처럼 보인다가 맞는 표현

멀티테스킹

  • 싱글코어 멀티테스킹
  • 멀티코어 멀티테스킹

데이터베이스

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

데이터베이스는 자료를 디스크에 차곡차곡 쌓아놓는 방법론

자료구조 vs. 데이터베이스

  • 자료구조: 대부분 주기억 장치 (= 메모리)에서 이루어질 내용
    앱이 실행중인 경우 프로세스에 올라가 있는 경우
    그 프로세스 안에서 일처리를 잘해낼 수 있도록
    데이터의 구조를 이쁘게, 확실하게 제어하는 기술적인 방법론

  • 데이터베이스: 대부분 보조기억장치에서 이루어질 내용
    나의 신상정보를 저장하려면 이런 구조로 만들어놔야지
    누구의 신상 정보를 가져올 때 더 편하게 가져올 수 있겠구나~
    우리 학교 사람들의 명단을 저장해두고 싶어
    이름 순 어때?
    반별로 해두자?
    성별?
    지역별?
    다 다름

    데이터를 나중에 어떤 목적으로 활용할 것이냐에 따라 디스크에 저장하는 모양이 바뀜. 그것을 생각하는 방법론.
    흔히 많이 쓰이고 있는 것은 관계형 데이터베이스

    DBMS

    데이터들을 디스크에 모양대로 저장해두고 관리할 수 있게 만든 소프트웨어

profile
iOS Developer

0개의 댓글