기초 개념) 컴퓨터 구조와 운영체제

동동주·2025년 7월 31일
0
post-thumbnail

같이 스터디하는 팀원이 기초 강의로 좋다고 하여!
빠르게 듣게 되었다 아래는 강의를 들으면서 메모 겸 적은 내용이다.

강의 링크: 컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기


컴퓨터 구조를 알아야 하는 이유

프로그래밍 언어뿐 아니라 컴퓨터의 근간을 알아야한다.

1. 문제 해결 능력

코드를 동일하게 작성해도 동작하지 않는 경우가 있다. -> 생각보다 아주 많다!
컴퓨터를 미지의 대상에서 분석의 대상으로 바라볼 수 있음

2. 성능, 용량, 비용

aws를 쓰더라도 이를 고려하는 걸 피할 수 없다.

컴퓨터 구조의 큰 그림

컴퓨터가 이해하는 두 가지 정보: 데이터(정적인 정보), 명령어

컴퓨터는 결국 명령어를 처리하는 기계

컴퓨터의 네 가지 핵심 부품

  • CPU, 메모리(RAM), 보조기억장치, 입출력장치

1. 메모리

  • 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품

  • 메모리를 어디에 저장했다는 위치 정보 -> n번지

메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다.
프로그램이 실행되려면 메모리에 저장되어 있어야 한다.
메모리에 저장된 값의 위치는 주소로 알 수 있다.

2. CPU

  • CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품

CPU 내부구성

1) ALU: 계산기
2) 레지스터: CPU 내부에 있는 작은 저장장치
3) 제어장치: 제어 신호를 내보내고, 명령어를 해석하는 장치
- 제어 신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호 (메모리 읽기 신호, 메모리 쓰기 신호...)

동작 과정



다음 단계에서 220을 5번지에 저장하게 됨

3. 보조기억장치

  • 메모리: 전원이 꺼지면 저장된 내용을 잃고, 비쌈
    보조기억장치는 전원이 꺼져도 보관될 프로그램을 저장하는 부품, 메모리보다 가격도 저렴하고 용량도 크다.

4. 입출력장치

입출력장치는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품
(모니터, 키보드, 마우스)

이 넷은 어떻게 연결된 건가

메인보드 & (시스템) 버스로!

  • 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음
  • 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로
  • 다양한 종류의 버스가 있음
  • 컴퓨터의 핵심 부품을 연결하는 버스는 시스템 버스

시스템 버스의 내부 구성

  • 주소 버스: 주소를 주고받는 통로
  • 데이터 버스: 명령어와 데이터를 주고받는 통로
  • 제어 버스: 제어 신호를 주고받는 통로

메모리 읽기

메모리 쓰기


운영체제

Windows, android, Macos..

(시스템) 자원

  • 프로그램이 실행되기 위해 마땅히 필요한 요소
  • 컴퓨터의 네 가지 핵심 부품 포함

운영체제

  • 자원을 관리하는 특별한 프로그램
  • 실행중인 프로그램을 관리하는 특별한 프로그램

    여기서 실행중인 프로그램이란? 프로세스


응용 프로그램: 웹브라우저, 메모장 등

🧠 누가 사용자 영역에 프로그램을 적재했을까?

-> 메모리의 운영체제죠 (자원관리 - 메모리관리)


운영체제의 크기보다 적재할 프로세스의 크기가 훨씬 크다면? 페이징과 스와핑 방식을 이용한다. (추가 심화 학습이 필요해보임)

🧠 우리는 보통 여러 프로그램을 동시에 실행한다.
-> 여러 개의 프로그램이 아주 빠르게 번갈아 가면서 실행된다.
그럼 어떤 프로세스를 먼저, 얼마나 오래 실행할까? CPU를 누구에게 먼저 할당해줄지
=> 이걸 하는게 운영체제다. 바로 운영체제의 자원(CPU) 관리

🧠 많은 프로그램들이 동시에 실행될 때, 누가 일목요연하게 실행을 관리해주지?
-> 운영체제의 프로세스 관리
-> 운영체제의 동기화 (ex. 프로그램 A보다 B가 무조건 먼저 실행되어야 해!!)

🧠 수많은 프로세스들이 자원에 마구 직접 접근해도 괜찮을까?
-> YES, 왜냐면 운영체제가 관리
-> 운영체제가 문지기 역할(시스템 호출)을 통한 자원을 보호함

운영체제는 마치 정부와도 같다

운영체제는 사용자를 위한 프로그램이 아니다. 프로그램을 위한 프로그램이다.
그렇기 때문에 프로그램을 만드는 개발자는 운영체제를 알아야 한다!

0개의 댓글