본문 바로가기
개발 스터디/CS

[스터디] 인프런 CS 전공지식 스터디 2기_운영체제(1주차)

by 왹져박사 2024. 10. 6.

~섹션2 유닛7

 

+강의 정리와 개인적인 지식, 의견 또한 포함되어 있습니다. 

강의의 자세한 내용은 포함하지 않고 있습니다. 

 

[섹션1 - 개요]

컴퓨터는 운영체제가 있어야 추가 기능을 사용 가능하다. 

 

운영체제의 일

프로세스 관리

메모리 관리

하드웨어 관리_사용자의 제한

파일 시스템 관리

 

운영체제의 구조

커널 

프로세스, 메모리, 저장장치 관리

사용자는 인터페이스를 통해 접근(GUI_그래픽 window, mac, CLI_텍스트 명령)

어플리케이션은 시스템 콜을 통해 커널에 접근

 

컴퓨터 하드웨어와 구조

폰 노이만

CPU - RAM

프로그램 내장방식 - RAM에 올려 CPU에서 처리

메인보드 : CPU, 메모리, 하드디스크, 그래픽카드, 출력장치(모니터, 키보드, 마우스, 스피커..)

 

CPU(Central Processing Unit) 중앙처리장치

산술논리 연산장치 - CPU의 데이터 연산 담

제어장치 - 모든 장치 동작 지시, 제어

레지스터 - CPU의 계산 임시 보관 장치

 

메모리

RAM

저장된 위치와 상관 없이 읽는 속도 동일

메인 메모리, 전력 끊기면 데이터 잃음

 

ROM

데이터 수정 불가

주로 컴퓨터 부팅 관련 바이오스 저장

 

부팅과정

ROM의 BIOS - 하드웨어 이상 체크

하드디스크의 부트로더 실행

운영체제 선택

메모리에 불러오기

운영체제가 관리 시작

 

 

폴링 방식

입출력 작업 입력

CPU가 입출력 관리자에 명령

CPU가 해당 작업 주기적으로 확인(폴링 방식) 

-성능이 좋지 못함

-이 단점을 해결 것이 인터럽트 

 

인터럽트 

CPU가 입출력 관리자에 명령

CPU는 다른 작업

입출력이 완료되면 입출력 관리자가 CPU에 전달

CPU는 인터럽트 서비스 루틴(ISR)을 실행시켜 작업 완료

비동기적

 

-하드웨어방식

-소프트웨어방식

 

 

[섹션2 - 프로세스와 쓰레드]

 

프로그램

저장장치에 저장된 명령문의 집합체

앱, 운영체제에서는 .exe 파일 

하드디스크만 사용하는 수동적 존재

 

프로세스

실행중인 프로그램

메모리에 올라간 프로그램

메모리, CPU, 입출력 사용 능동적 존재

Code 영역 - 실행 코드

Data 영역 - 전역 변수, static 변수 저장

Stack 영역 - 지역변수, 함수 호출 시 주소 저장

Heap 영역 - 동적 메모리 할당

 

 

C언어는 컴파일 언어. 

소스파일을 프로그램으로 컴파일하는 과정 :

file.c → 전처리기(매크로 처리) → file.i →컴파일러(컴파일) → file.s → 어셈블러(어셈블리어→기계어) → file.o(기계어) → 링커(링킹_라이브러리, 소스코드 연결) → file.exe 프로그램 생성

 

file.exe 프로그램을 실행하면, RAM에 올라가며 프로세스가 됨

이때부터 운영체제가 관리. 

CPU는 기계어 실행. 

 

CPU의 제어장치가 초기화된 변수를 메모리에 저장. → edx, eax 레지스터로 가져와 저장. 

제어장치의 변수 사용 명령 → 산술논리연산장치가 연산 후 eax 레지스터에 저장

→ 제어장치가 eax 레지스터 저장된 값을 메모리에 저장. 

 

 

 

오늘날의 OS는 멀티프로그래밍과 멀티프로세싱 공존. 

 

_과거에는 메모리가 작아 멀티프로그래밍 불가했음!

_유니프로그래밍을 사용하며 멀티프로세싱. 

_스와핑(Swapping)

메모리에 프로세스를 올림 → CPU로 처리 → 프로세스를 다른 저장장치에 저장 → 다른 저장장치에 있던 프로세스를 메모리에 올림 → CPU로 처리. 

 

멀티프로그래밍

여러 개의 프로세스가 올라옴. 

 

멀티프로세싱

시분할 처리로 CPU가 각각의 프로세스를 짧은 시간 동안 교대로 실행. 

 

 

 

 

 

+추가 중....🥲