Data it girls

3주차 복기

Grace Ryu 2023. 8. 5. 09:30

 

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

 
데잇걸즈 2주 과정 동안 python의 기초문법을 배우고, 데이터분석 패키지인 numpy, pandas를 차근차근 배워나간다. 이 과정이 끝나고나면 전공 2~3개 과목을 배운 것과 같다고 한다. 파이썬을 배우면서 근본을 알아야겠다는 생각에 Youtube에서 컴퓨터 기초 이론 영상을 찾았다.  
 
프로그래밍 언어(문법)뿐 아니라, 컴퓨터의 근간(원리)을 알면 문제 해결 능력과 성능, 용량, 비용을 고려한 프로그래밍이 가능하다. 
1) 문제해결능력 : 문법에 맞는 소스 코드를 입력하는 개발자 vs. 문제해결 개발자
2) 성능, 용량, 비용을 고려한 프로그래밍 : cloud를 사용하더라도 CPU, 메모리, 저장용량을 직접 선택해야 한다.
 
 

2. 컴퓨터의 구조

1) 컴퓨터 이해하는 정보 : 데이터, 명령어
① 데이터 : 숫자, 문자, 이미지, 동영상 등 정적 정보, 컴퓨터와 주고받는(내부에 저장된) 데이터 통칭, 명령어를 위한 일종의 재료
② 명령어 : 컴퓨터를 실질적으로 움직이는 정보
eg.1과 2를 더하라 -> 1,2는 데이터, 액션은 명령어 
→ 소스 코드를 직접적 실행하는 것이 아니라, 명령어 형태로 변환해 출력
→ 컴퓨터가 이해하는 명령어를 사람이 읽기 쉽게 한번 변환해 준 언어 = 어셈블리어(컴퓨터를 동작시키는 명령어)
 
2) 컴퓨터의 네 가지 핵심 부품 : cpu, 메모리(=주기억장치=RAM), 보조기억장치, 입출력장치
폰노이만 구조에 따라 CPU, MEMORY(주기억장치=RAM), DISK로 구성되는데, CPU는 ALU산술연산과 register, memory는 명령어 임시 저장공간, disk는 실제 저장소를 의미다.

①메모리 : 현재 실행되고 있는 프로그램의 명령어와 데이터를 저장, 메모리 저장된 값의 위치는 주소로 확인. 
: 메모리의 종류는 주기억장치(통상 2가지 하드웨어를 지칭한다. (RAM, ROM)
: RAM은 비싸고, 전원이 꺼지면 저장된 내용을 잃는다 (휘발성 저장장치) 

* memory는 저장 공간의 관리가 핵심. cost는 disk 쪽으로 갈수록 높아지며, CPU 쪽으로 갈수록 낮아진다. 
* 프로그램이 동시 실행될 때, 데이터를 IN/OUT 할 적재시킬 관리 대상이 필요하다(메모리 관리 교체 알고리즘)
* program 실행 파일은 code+resource를 담고 있으며, 파일로 저장된 프로그램이 memory에 올라가는 순간이 process. 즉 process는 program이 실행되고 있는 것. 

②CPU : 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 정치, CPU 내부에는 ALU, 제어장치, 레지스터가 있다. 
* ALU(계산기-산술논리연산장치 줄임말)
* 제어장치(제어신호를 내보내고 명령어를 해석하는 장치)
* 레지스터(CPU 내부 작은 임시저장장치)

③보조기억장치 : USB, SD카드, CD_ROM, HARD DISK, SSD 등이 보조기억장치다.
RAM은 휘발성 저장장치(실행 중인 프로그램의 명령어와 데이터 저장에 의의가 있음)이기 때문에, 이를 보완하기 위해 생긴 보조기억장치는 전원이 꺼져도 저장이 가능하다. 용량도 메모리에 비해 훨씬 크다. 

 
④입출력장치 : 모니터, 키보드, 마우스, 스캐너 등 컴퓨터 외부와 연결되어 컴퓨터 내부와 정보를 교환하는 부품

→ 4가지 핵심 부품들은 연결되어 있어야 하며, 이를 연결시켜 주는 대상은 2가지 
ⓐ 메인보드(=mother board) : 판이라고 부름
ⓑ system bus : 정보를 주고받을 수 있는 통로 (주소버스, 데이터버스, 제어버스)
 
 

3. 운영체제

윈도우, 안드로이드, macOS, iOS, linux 등 일반적 운영체제라고 함
자원을 관리하는 특별한 프로그램. 실행 중인 프로그램(=프로세스)을 관리하는 특별한 프로그램
 
* 자원(=리소스=시스템자원) : 프로그램이 실행되기 위해 마땅히 필요한 요소, 컴퓨터 4가지 핵심 부품도 포함됨
운영체제는 메모리에 저장되어 있으며, 특별하기 때문에 '커널 영역'에 위치되어 실행
* 커널영역 (운영체제) vs. 사용자영역(메모장 같은 일반적 응용프로그램)
 
역할 (프로그램을 위한 프로그램) 
① 프로그램(eg. 게임)이 메모리 어디에 저장되어야 하는지 결정 
② 실행되지 않는 프로그램은 메모리에서 지워주는 역할 
③ 메모리의 물리적 크기가 적재할 프로세스보다 작은 경우, 프로그램을 실행할 수 있게 해 줌 (paging, sawpping)
④ 운영체제의 CPU관리 : 어떤 프로세스를 먼저, 얼마나 오래 실행할지 결정
⑤ 운영체제의 프로세스 관리 :동시에 실행되는 프로세스(프로세스 동기화)를 관리
⑥ 문지기 역할(시스템 호출)을 통한 자원 보호 : 수많은 프로세스들이 자원에 마구 직접 접근하지 못하고 운영체제를 통해 접근함(운영체제는 자원을 보호하고, 자원 접근을 대행)

* processor = CPU, 컴퓨터는 여러 개의 program이 작동되며, CPU에서는 1개의 명령어만 처리한다. 
예를 들어 P1, P2, P3... 순으로 특정 시간만큼 시분할 순으로 프로그램이 배정을 받게 되는데, 어떤 program을 먼저 처리할지 결정이 필요하다. 이를 CPU scheduling이라고 하며, 많은 OS가 선점형 scheduling을 사용한다. 
선점형 scheduling : process 중 우선순위가 높은 순으로 CPU 차지하는 권한을 준다.
* FIFO scheduling : first in first out, 먼저 들어온 순서대로 요청한다. 
* 개발자들이 program을 만든다고 하는 것은 source, tool(c, java, c++)을 통해 개발을 하는데, 이때 컴퓨터가 언어를 이해할 수 없으므로 binary file로 바꾸게 됨(compile -. exe,. dll)
* DISK관리는 disk를 얼마나 빠른 속도로 file을 access 할 것인가이다. 
* CPU scheduling, memory 관리, disk 관리하는 것이 운영체제이며, 운영체제가 하는 일은 hardware(CPU, memory, disk)를 잘 동작할 수 있게, 여러 프로그램이 동시에 최적의 성능을 낼 수 있게 memory나 CPU를 사용해서 프로그램이 구동될 수 있게 해주는 역할이다. 
 
 
 

4. 데이터 분석 과정을 완강한 나에게 보내는 편지

4개월 동안 고민이 많았을 거야. 2,920시간을 헛되이 기억하지 않도록 하기 위해 너도 많은 노력을 했겠지. 수업에서 만난 소중한 동료들, 데이터와 씨름하며 밤샌 나날들, 함께 준비한 데이터분석 자격시험... 이 모든 과정을 거쳐, 지금 네가 이처럼 귀한일을 할 수 있게 된 거 아니겠어?  어때, 16주 좀 버텨본 값어치를 톡톡히 하는 것 같지 않니? 잘 해온 너에게 고맙다.  From. 8월의 '너‘

 
 

5. 한 주의 마무리

1) 온라인 수업은 집중력 유지를 위해서 간식 줄이기
2) 복습은 코드 리뷰와 교안 정리를 동시에 해야 한다
3) 컴퓨터 기초 용어도 공부하자.