CPU는 0과 1로 구성되는 명령어를 하나씩
수행하는 장치
CPU가 동작할 명령어들을 Disk(HDD)
에서 명령어를 저장하고 한줄씩
가져온다.
문제
: 모터의 성능
으로 작동되는 Disk는 느리고 CPU는 빠르기 때문에 CPU 효율
이 떨어진다.
해결방안
: 폰노이만 아이디어 = 프로그램 내장방식
메모리
에 모든 명령어를 집어넣고 메모리에서 한개씩 빼오는 방식
Loading(Load 작업) : 저장장치(HDD)에 저장된 0과 1 명령어들이 메모리에 한꺼번에 복사된다.
프로그램 전체를 불러오기 때문에 시간이 꽤 걸린다. 이제 메모리에서 CPU로 명령어를 전달한다.
한계점
: HDD에서 명령어를 전달하는거에 비해 빨라진긴 했지만, CPU 성능 대비 느린건 여전하다.
메모리 : 빠른성능, 저장장치 처럼 저장하는 기능을 갖지만, 전원을 끄면 모두 소멸하는 장치
휘발성 : DRAM, SRAM
비휘발성 : EEPROM, Flash Memory
속도차이 : CPU > 메모리 > 저장장치
SRAM : 속도가 빠르다, 비싸다, 밀도가 낮다(부피가 커서, 생산량이 떨어진다.)
DRAM : 속도가 느리고, 싸다, 밀도가 크다(부피가 작아서, 생산량이 좋다.)
메모리는 DRAM
을 사용하고 CPU안에 내장 메모리를 SRAM
을 사용한다.
DRAM에서 SRAM에 여러줄 명령어를 한꺼번에 보낸다. SRAM 용량이 작아 모든 명령어를 한꺼번에 전달하지는 못한다.
명령어는 한줄씩 SRAM과 CPU 코어
와 주고받는다. DRAM에서 받은 명령어를 SRAM에서 다 수행했을 경우, 그제서야 DRAM에서 또 전달받는다. 이 SRAM을 Cashe 메모리
라고 한다.
SRAM(Static RAM) : Cache 메모리
DRAM(Dynamic RAM) : Main 메모리
캐쉬메모리에서 필요로 하는 정보가 메모리에 존재하면 HIT 없으면 MISS
프로그램 : CPU의 2진수 명령어들의 집합
프로그램을 실행하면 메모리에 적재(Loading) 된다.
프로세스 : 실행
된 프로그램을 뜻함
프로세서 : 프로그램을 실행하는 칩셋(HW)
역할 : 0과 1로 된 CPU 명령어
를 저장하는 역할, 변수
가 만들어지는 공간
메모리 공간은 여러개의 프로세스 공간
으로 나뉘고, 각 프로세스는 소스코드 공간과 변수들이 만들어질 공간으로 나뉩니다.
서로 다른 프로세스 끼리는 변수값들을 공유할 수 없다. (참고. IPC 이용하면 가능)
하나의 Process는 text/data/bss/stack/heap으로 세그먼트 구성된다.
초기값이 없bss
, 전역변수가 0으로 자동 초기화되는 것은 bss에 저장된 변수들을 0으로 초기화시키기 때문이다.지역변수
가 저장되는 공간malloc
(메모리 공간 생성 명령어)으로 만든 변수들하나의 CPU 코어는 한번에 한가지 동작만
수행합니다. 한 프로세스를 수행하면 다른 프로세스는 멈춰있는 상태가 된다.
CPU 코어가 하나라면 여러개의 프로세스를 멀티테스킹 한다고 하면 매우 빠른 속도
로 하나씩 돌아가면서 수행하게 된다.
다중 process는 커널
에서 지원을 해줘야 가능합니다.
Fireware 개발 level에서는 힘들고 RTOS 또는 Linux OS
를 올려 개발해야 합니다.
Thread
: 한 프로세스 내에서 동시에 동작되도록 하는 것이지만, 순서는 보장이 되지 않는다.
Thread POSIX API
를 사용할 줄 알면 쉽게 동시작업 프로그래밍이 가능하다.
다중 Thread는 운영체제가 API
로 지원해줘야한다.
OS는 다른 프로그램을 감시하고 관리하는 기능을 합니다. 컴퓨터터의 자원관리 및 스케쥴링을 하는 소프트웨어 입니다.