코드온 CS 스터디
학습 기간
2024.09.14.(토) ~ 24.(화)
- 추석 연휴 및 스터디 시간 변경으로 인한 기간 연장
3주차 학습 주제
- 운영체제 기초
- 운영체제의 역할과 구조: 운영체제의 기본 기능과 컴퓨터 시스템 내의 위치.
- 컴퓨터의 요소: CPU, 메모리, 저장장치 등 하드웨어의 주요 구성 요소.
- 메모리 관리
- 메모리 계층: 캐시, 메인 메모리, 가상 메모리의 역할과 계층 구조.
- 메모리 관리 기법: 페이징, 세그멘테이션, 메모리 할당 기법.
1. 운영체제 개요
1. 운영체제의 역할과 구조
운영체제(Operating System)는 하드웨어와 소프트웨어 간의 인터페이스를 제공하는 시스템 소프트웨어로,
사용자와 컴퓨터 하드웨어를 연결하는 역할을 한다.
운영체제는 커널(Kernel), 쉘(Shell), 파일 시스템, 네트워크 시스템 등으로 구성되며,
대표적인 운영체제로는 Windows, Linux, Mac OSX, iOS 등이 있다.
운영체제를 사용하는 주된 목적은 컴퓨터의 하드웨어를 관리하는 것이다.
CPU, 메모리, 디스크, 키보드, 마우스, 모니터, 네트워크 등을 관리하여 컴퓨터를 효율적으로 사용할 수 있다.
주요 역할은 다음과 같다.
- 프로세스 관리: 여러 프로그램(프로세스)을 동시에 실행하고 관리한다.
- 메모리 관리: 프로그램들이 사용할 메모리를 할당하고, 메모리 자원을 효율적으로 관리한다.
- 파일 시스템 관리: 데이터 저장 및 접근을 위한 파일 시스템을 제공한다.
- 입출력(I/O) 관리: 디스크, 네트워크, 프린터 등 외부 장치와의 상호작용 관리한다.
- 보안 및 권한 관리: 사용자 인증, 접근 권한 제어 등 시스템 보안 관리한다.
운영체제를 사용하는 다른 목적으로는 사용자에게 편의를 제공한다.
운영체제를 통해 사용자와 애플리케이션이 하드웨어에 직접 접근하지 않고도 작업을 수행할 수 있다.
운영체제가 없으면 하드웨어를 모두 사용자가 관리하여야하며, 컴퓨터를 사용하는데 많은 불편함을 겪을 수 있다.
운영체제의 핵심 구성 요소로는 커널과 쉘이 있다.
- 커널(Kernel)
- 커널은 운영체제의 핵심으로, 시스템의 모든 기본적인 작업을 관리한다.
하드웨어와 소프트웨어 간의 통신을 담당한다.
CPU, 메모리, I/O 장치와 같은 하드웨어 자원을 관리하고, 시스템의 전반적인 안정성을 유지한다. - 종류: 모놀리식 커널(Monolithic Kernel)과 마이크로커널(Microkernel)로 나뉜다.
모놀리식 커널은 모든 시스템 자원 관리를 커널 내에서 수행하고,
마이크로커널은 최소한의 기능만을 커널이 담당하고 나머지는 사용자 공간에서 처리한다.
- 커널은 운영체제의 핵심으로, 시스템의 모든 기본적인 작업을 관리한다.
- 쉘 (Shell)
- 쉘은 사용자와 커널 사이의 인터페이스를 담당하는 프로그램이다.
사용자로부터 명령을 받아 커널에 전달하고, 그 결과를 사용자에게 출력한다.
명령어 해석기로서 작동하며, 사용자는 쉘을 통해 프로그램 실행, 파일관리, 시스템 상태 모니터링을 할 수 있다. - 종류: 명령 줄과 그래픽 형으로 나뉜다.
명령 줄 쉘은 운영체제 상에서 명령 줄 인터페이스 (CLI)를 제공하며,
그래픽 쉘은 그래픽 사용자 인터페이스 (GUI)를 제공한다.
- 쉘은 사용자와 커널 사이의 인터페이스를 담당하는 프로그램이다.
2. 컴퓨터의 주요 구성 요소
컴퓨터를 구성하는 핵심 요소는 CPU, 메모리, 보조기억장치, 입출력 장치로 나뉜다.
- CPU (중앙 처리 장치)
CPU는 컴퓨터의 두뇌로, 메모리에 저장된 명령어를 읽고 해석하고 실행한다.
CPU의 구성 요소는 아래와 같다.
- ALU (산술 논리 연산 장치): 산술연산, 논리연산을 계산하는 디지털 회로이다.
- 레지스터 (Register): CPU가 요청을 처리한ㄴ 데 필요한 데이터를 일시적으로 기억한다.
- 제어장치 (CU, Control Unit): 제어 신호를 통해서 명령어의 조작을 지시한다.
- 메모리 (주기억장치)
컴퓨터가 이해하는 정보로는 명령어와 데이터가 있으며,
메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 요소이다.
메모리 주소를 사용하여 메모리 내에 저장된 값을 빠르고 효율적으로 접근할 수 있다. - 보조기억 장치
보조기억 장치는 물리적인 디스크가 연결된 기억 장치로,
주 기억장치보다는 느리지만 컴퓨터를 종료하여도 데이터가 사라지지 않고 영구적으로 보존할 수 있다.
대표적인 보조기억 장치로는 HDD, SSD, USB, DVD, CD-ROM이 있다. - 입출력 장치
입출력 장치는 마이크, 스피커, 프린터, 마우스, 키보드 처럼 컴퓨터 외부에 연결되며,
컴퓨터 내부와 정보를 교환하는 장치이다.
2. 메모리 관리
1. 메모리 계층 구조
메모리 계층 구조는 메모리를 필요에 따라 여러가지 종류로 나누는 것을 의미한다.
메모리는 데이터 접근 속도와 용량에 따라 여러 계층으로 나뉘며, 각 계층은 역할과 특징이 다르다.
계층 구조를 나눔으로써 CPU가 메모리에 더 빠르게 접근할 수 있다.
상위부터 레지스터, 캐시, 메모리, 하드디스크로 나뉜다.
- 레지스터
- 위치: CPU 내부
- 접근 속도: 빠름
CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 젖아하는 기억장치이다.
컴퓨터의 4대 주요 기능인 기억, 해석, 연산, 제어를 관할하는 장치로
CPU는 자체적으로 데이터를 저장할 수 없어 연산을 위해서는 반드시 레지스터를 거쳐야한다. - 캐시
- 위치: CPU 내부
- 접근 속도: 빠름
- 종류: CPU 캐시, 디스크 캐시, 페이지 캐시
데이터나 값을 미리 복사하는 임시 장소로, 시스템의 효율성을 위해 사용된다.
캐시 접근 시간에 비해 원본 데이터에 접근이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약할 때 사용된다.
속도가 빠른 장치와 느린 장치 사이에서의 속도차로 인한 병목 현상을 완화할 수 있는 범용 메모리이다. - 메모리
- 위치: CPU 외부
- 접근 속도: 레지스터와 캐시보다 느림
메인 메모리, 주기억장치를 의미하며, 컴퓨터에서 수치, 명령, 자료 등을 기억한다.
메인 메모리는 휘발성 기억 장치인 RAM과 고정 기억 장치인 ROM으로 나뉜다.
- RAM (Random Access Memory) : 휘발성 기억 장치
컴퓨터가 빠른 엑세스를 위해 데이터를 단기간 저장하는 구성요소이다.
전원이 유지되는 동안 CPU의 연산 및 동작에 필요한 모든 내용이 저장되며, 전원 종료 시 기억된 내용이 모두 삭제된다. - ROM (Read Only Memory): 고정 기억 장치
컴퓨터의 지시사항을 영구적으로 저장하는 비휘발성 메모리이다.
RAM과 달리 전원 종료 시에도 기억된 내용을 유지한다.
변경 가능성이 희박한 기능 및 부품에 사용되며
예로, 소프트웨어에서는 초기 부팅 관련 부분을 하드웨어에서는 프린터 작동에 관여하는 펌웨어 명령 등에 사용된다.
- RAM (Random Access Memory) : 휘발성 기억 장치
- 하드디스크
- 위치: CPU에서 직접 접근 불가
- 접근 속도: 데이터를 메모리로 이동시켜 접근 가능
하드 디스크(Hard Disk), 하드 드라이브(Hard Drive), 고정 디스크(Fixed Drive)로 나뉜다.
비휘발성에 순차 접근이 가능한 컴퓨터의 보조기억장치로,
비휘발성 데이터 저장소 가운데 가장 대중적이며 용량 대비 가격이 가장 저렴하다.
작동 원리는 보호 케이스 내부의 플래터가 회전하면 플래터에 자기 패턴으로 정보가 기록된다.
플래터 표면의 코팅된 장성체에 데이터가 기록되며,
회전하는 플래터 위에 부상하는 입출력 헤드에 의해 자기적으로 데이터 기록 및 조회가 가능하다.
2. 메모리 관리 기법
운영체제는 효율적인 메모리 관리를 위해 다양한 기법을 사용한다.
메모리 관리 기법을 이해하기 위한 몇가지 용어이다.
- 논리적 주소(logical address): 프로세스가 메모리에 적재되기 위한 독자적인 주소 공간이다. 논리적 주소는 각 프로세스마다 독립적으로 할당되며, 0번지부터 시작된다.
- 물리적 주소 (pysical address): 프로세스가 실제로 메모리에 적재되는 위치이다.
- 주소 바인딩 (address binding): CPU가 기계어 명령을 수행하기 위하여 프로세스의 논리적 주소가 실제 물리적 메모리의 어느 위치에 매핑되는지 확인하는 과정이다.
- 메모리 단편화: 물리적 메모리 공간이 작은 조각으로 나눠져서 메모리가 충분히 존재함에도 할당이 불가능한 상태이다.
메모리 관리 기법으로는 페이징, 세그멘테이션, 연속 메모리 할당이 있다.
- 페이징(Paging): 메모리를 고정된 크기의 page 단위로 나누어 물리적 메모리의 서로 다른 위치에 저장하는 메모리 관리 기법이다. 가상 메모리의 중요한 기법 중 하나로, 메모리 단편화를 줄이고 효율성을 높인다.
- 세그멘테이션(Segmentation): 프로그램을 논리적인 단위(segment)로 나누어 각 세그먼트를 메모리에 적재하는 방식이다. 프로세스의 논리적 구조를 반영할 수 있지만, 외부 단편화가 발생할 수 있다.
- 연속 메모리 할당: 프로세스를 메모리에 연속적으로 할당하는 기법으로 할당과 제거를 반복하면 Scatted Holes가 발생하여 외부 단편화가 발생할 수 있다. 최초 적합(First Fit), 최적 적합(Best Fit), 최악 적합(Worst Fit)과 같은 기법을 통해 메모리 공간을 효율적으로 분배하고 관리한다.
참고 자료
- https://ko.wikipedia.org/wiki/운영체제
- https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-1.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%9E%80
- https://ko.wikipedia.org/wiki/%EC%85%B8
- https://velog.io/@yu-jin-song/CS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0
- https://hyuuny.tistory.com/155
후기
스터디 방식이 바뀌어서 깃 허브에서 블로그로 옮기게 되었습니다.
학교에서 전공으로 공부한 내용이나 부쩍 새롭게 느껴져 충격을 받았습니다.
특히 메모리 관리 기법은 처음 들어보는 듯한 기분이었습니다.
역시 공부는 반복적인 복습이 중요한 것 같습니다.
'[9oorm x kakao] 구름톤 유니브 3기 > [구름톤 유니브] KDT 스터디' 카테고리의 다른 글
[코드온 - 5주차] 데이터베이스 기본과 ERD (3) | 2024.10.08 |
---|---|
[코드온 - 4주차] 프로세스와 스레드 (2) | 2024.10.01 |
[코드온 - 2주차] 네트워크의 기초와 TCP/IP 모델 (1) | 2024.09.24 |
[코드온 - 1주차] 디자인 패턴과 프로그래밍 패러다임 (3) | 2024.09.24 |