컴퓨터의 구성요소는 크게 기계적 요소인 하드웨어(Hardware)와 프로그램 요소인 소프트웨어(Software)로 나눌 수 있다
하드웨어
- 메인보드와 시스템버스
- 메인보드는 핵심 부품들이 정보를 주고받기 위해 연결시킨 판
- 시스템버스는 핵심 부품들이 정보를 주고받는 통로이다
- 주소 버스 : 주소를 주고 받는 통로
- 데이터 버스 : 명령어와 데이터를 주고 받는 통로
- 제어 버스 : 제어 신호를 주고받는 통로
- 컴퓨터의 기계적 요소인 하드웨어에는 네 가지의 핵심 부품이 있다
- CPU(Central Processing Unit : 중앙처리장치)
- 메모리에 저장된 명령어를 읽어들이고, 해석하고 실행한다
- CPU의 내부 장치 -> ALU, 레지스터, 제어장치
- ALU : 산술 논리 저장장치
- 레지스터 : CPU 내부의 작은 임시 저장장치
- 중앙처리장치 내에 데이터 또는 중간 처리 결과를 일시적으로 기억하는 고속의 기억장치 - 제어장치 : 제어 신호를 보내고 명령어를 해석하는 장치
- 성능
- 클록(Clock) 주파수와 코어(Core) 수에 영향을 받는다
- 클록 주파수 : 클록 펄스의 발생 주기
* 펄스를 이용해 각 장치와 회로의 모든 동작을 동기화
- 코어 : 중앙처리장치의 주요 처리회로
- 클록(Clock) 주파수와 코어(Core) 수에 영향을 받는다
- 메모리(주기억장치 : RAM/ROM) : 일반적으로 램을 지칭함
- 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 - > 전원이 꺼지면 저장된 내용을 잃는다(휘발성)
* 현재 실행되는 프로그램 = 프로세스 - 메모리에 접근할 때는 번지수(주소)를 보고 원하는 데이터나 명령어에 접근한다
- 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다
- 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품 - > 전원이 꺼지면 저장된 내용을 잃는다(휘발성)
- 보조기억장치
- 메모리는 전원이 꺼지면 저장된 내용을 잃기 때문에 전원이 꺼져도 보관할 대상을 저장한다
- 메모리에 비해 저렴하고 용량이 크다
- 대표적인 보조기억장치로 하드 디스크 드라이브가 있는데 이것은 플래터(platter)라는 원판에 헤드를 이용해 데이터를 기록하는 방식이므로 물리적인 탐색시간, 지연시간, 소음 등이 발생한다 -> 메모리보다 속도가 느리다
- 입출력장치
- 컴퓨터의 외부에 연결되어 컴퓨터 내부와 정보를 교환한다
- 모니터, 키보드, 마우스 등이 대표적이다
- CPU(Central Processing Unit : 중앙처리장치)
소프트웨어
- 운영체제
- 하드웨어를 제어하고 응용소프트웨어를 실행하기 위한 환경 제공하는 등 사용자(응용소프트웨어)와 하드웨어의 중재 역할을 하는 소프트웨어이다
- 자원 및 프로세스를 관리하는 특별한 프로그램으로 메모리의 커널 영역에 적재되어 실행된다
* 커널 : 하드웨어와 응용프로그램 사이에서 인터페이스 역할을 수행하기 위한 핵심 부분
** 인터페이스 : 연결해주는 매개체 - 사용자의 영역에서 실행되는 프로그램 및 자원을 관리한다
- 여러 개의 프로그램이 동시에 실행되는 것은 여러 개의 프로그램이 아주 빠르게 번갈아가며 실행되는 것이다 (멀티태스킹)
- 프로그램을 실행하기 위해서는 CPU가 필요한데 이때 운영체제가 자원관리를 해준다 (어떤 프로그램의 순서로 얼마만큼의 시간동안 CPU를 할당 받을 지 -> 스케줄링) - 응용프로그램에서 직접적으로 자원에 접근할 시 문제가 생길 수 있다. 따라서 실행중인 사용자 프로세스는 운영체제를 통해 자원에 접근할 수 있다
- 운영체제는 시스템 호출을 통해 자원을 보호한다
- 자원 및 프로세스를 관리하는 특별한 프로그램으로 메모리의 커널 영역에 적재되어 실행된다
- 프로세스 관리
- 응용프로그램의 실행은 프로세스 생성으로 이루어진다
- 프로세스를 생성하고 종료, 프로세스간 통신 등 프로그램 실행을 위한 가장 기본적인 기능
- 메모리 관리
- 응용 프로그램에 메모리를 할당하고 사용하지 않는 메모리를 화수하는 역할
- 디스크를 사용해 부족한 메모리는 가상메모리로 운영하는 등의 관리 기능
- 파일 관리
- 하드디스크를 물리적 혹은 논리적으로 분할하고 운영체제에서 사용할 수 있도록 마운팅 기능 제공
- 파일이나 디렉토리를 생성하고 관리할 수 있음
- 장치 관리
- 컴퓨터에 연결된 각종 하드웨어를 응용 프로그램에서 사용할 수 있도록 연결해주는 소프트웨어
- 종류
- 윈도우 : 마이크로 소프트의 운영체제
- 맥 OS : 애플의 운영체제, 유닉스 계열 기반
- 리눅스 : 유닉스를 기반으로 개발되고 인터넷을 통해 무료로 배포되는 운영체제
- 안드로이드 : 구글에서 개발한 모바일영 운영체제
- IOS : 애플의 모바일 운영체제
- 하드웨어를 제어하고 응용소프트웨어를 실행하기 위한 환경 제공하는 등 사용자(응용소프트웨어)와 하드웨어의 중재 역할을 하는 소프트웨어이다
헷갈리는 용어들
- 멀티 어쩌고
- 멀티프로세싱
- 다수의 프로세서가 협력적으로 일을 처리하는 것
- 다수의 프로세서(CPU)가 다수의 작업 수행
- 멀티태스킹
- 다수의 작업을 운영체제의 스케줄링에 의해 번갈아가며 수행되도록 해주는 것
- 한 순간에 하나의 작업만 수행
- 멀티스레드
* 스레드 : 어떠한 프로그램 내에서 실행되는 흐름의 단위
- 하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복을 최소화하여 수행 능력을 향상시키는 것
- 하나의 프로세스가 여러 개의 스레드를 수행
- 멀티프로세싱
- 프로세스 vs 프로세서
- 프로세스 : 현재 실행되는 프로그램
- 프로세서 : 프로그램을 실행하는 장치(하드웨어)
오늘 특강에서 배운 컴퓨터 구조와 운영체제 정리!
'[내일배움캠프]스파르타코딩클럽 AI 웹개발 > Today I Learned' 카테고리의 다른 글
[내일배움캠프 26일차 TIL] 프로토콜 (0) | 2024.07.29 |
---|---|
[내일배움캠프 25일차 TIL] 소프트웨어 설계 (0) | 2024.07.26 |
[내일배움캠프 23일차 TIL] 백준 10989번 수 정렬하기 3, 16951번 미로 탐색 with python (0) | 2024.07.24 |
[내일배움캠프 22일차 TIL] 백준 23885 비숍 투어 with python (1) | 2024.07.23 |
[내일배움캠프 21일차 TIL] 백준 1012 유기농 배추 with python (0) | 2024.07.22 |