CS 지식/[codeit] 컴퓨터개론 (완)

[ codeit ] 컴퓨터개론 - 소프트웨어 이해하기

web_seul 2021. 5. 10. 01:39
반응형

 컴파일러와 인터프리터 

1강. 다양한 애플리케이션

애플리케이션 : 사용자가 직접 사용하는 프로그램, end user

컴퓨터, 모바일, 가전제품, 계산기 등

 

2강. 소프트웨어 퀴즈 I

 

3강. 애플리케이션을 만드는 프로그램

프로그래밍 코드를 실제 작동하는 프로그램으로 바꿔주는 소프트웨어인 컴파일러와 인터프리터

 

4강. 프로그래밍 언어의 번역기, 컴파일러

                                                          개발자      //    사용자

고수준의 프로그래밍 언어(1)     --->    machine code(10)      //  ---->    사용자 컴퓨터    ---> 작동

                           compiler(프로그래밍 언어의 '번역기')

컴파일러의 단점 : 빠르게 개발할 수 없다

                      (machine code를 사람이 이해할 수 없어 간단한 수정에도 컴파일 과정이 필요해서)

 

5강. 실시간 코드 실행기, 인터프리터

컴파일러 : 프로그램언어 전체를 한번에 컴퓨터 언어로 번역, 프로그램 용량 큼(고수준1 -> 저수준10)

인터프리터 : 한 줄씩 즉시 실행, 프로그램 용량 적음

               개발자    //    사용자

프로그래밍 언어      --->    (인터프리터를 가진) 사용자 컴퓨터   --->    작동

                                                                    interpreter(코드 실행기)

인터프리터의 단점 : 실행 속도가 느림, 코드 유출 위험

 

6강. 컴파일러 vs 인터프리터

  컴파일러 인터프리터
개발 편의성 코드 수정하고 재컴파일 후 실행 코드수정 후 즉시 실행 가능
실행 속도 빠름 느림
보안 프로그램의 코드가 유출되지 않음 프로그램의 코드 유출가능성 있음
파일 용량 프로그램의 실행파일 전체를 전송해야하므로 용량이 큼 프로그램의 코드만 전송하면 실행되므로 용량이 작다
프로그래밍 언어 C, C++ 처럼 비교적 저수준에 가까운 언어 Python, Ruby처럼 비교적 고수준에 가까운 언어

 

7강. 소프트웨어 퀴즈 II

 

8강. 첫 번째 컴파일러는 어떻게 만들어졌을까요?

print("Hello")
extern printf
        section .data
msg:    db "Hello", 0
fmt:    db "%s", 10, 0
        section .text
        global main
main:
        push    rbp
        mov     rdi,fmt
        mov     rsi,msg
        mov     rax,0
        call    printf
        pop rbp
        mov rax,0
        ret

python vs assembly

 

 운영 체제 개요 

1강. 애플리케이션을 도와주는 프로그램, 운영 체제

운영체제 Operating System

컴퓨터 : 윈도우10, masOS, Linux

핸드폰 : 안드로이드, iOS

 

2강. 운영 체제의 역할 I (입력과 출력)

입력장비와 출력장비의 연결

 

3강. 운영 체제의 역할 II (저장과 불러오기)

1. 휘발성 vs 비휘발성

   휘발성 : 컴퓨터가 켜져있는 동안만 저장되는 정보 _ RAM

   비휘발성 : 컴퓨터가 꺼져도 저장되는 정보 _ 하드디스크

 

2. 빠르고 작은 용량 vs 느리고 많은 용량

 

3. 데이터 수정 가능 vs 데이터 수정 불가능

   수정가능한 저장장치 : 영화, 문서, 사진 등

   수정불가한 저장장치(Read Only Memory) : 컴퓨터 기본 세팅

 

상황과 목적에 맞게 저장장치를 선택하는 역할의 운영체제(OS)

 

4강. 운영체제의 역할 III (여러 프로그램 동시에 빠르게 실행하기)

멀티태스킹

 

5강. 운영 체제의 종류

- 데스크톱, 랩톱 : windows10, macOS, Linux

- 모바일 : Android, iOS, windows mobile 등

- 서버 : 안정성, 속도, 효율이 가장 중요 /  Ubuntu, Unix, centOS 등

- 임베디드 : atm, 포스, 카메라 등에 사용, 종류나 환경이 다향해서 운영체제가 매우 많음

   실시간 운영체제(RTOS, Real-time operating system), 정확도 > 신속

 

6강. 운영 체제의 발전 역사

unix : 다양한 운영체제의 뿌리

1970s 초, 벨연구소의 켄 톰슨과 데니스 리치가 최초 개발

대부분 c언어로 작성, 다른 컴퓨터에 수정해서 적용이 쉬운 unix -> 비슷한 운영체제 등장 -> 표준화 POSIX

 

GNU(GNU is Not Unix) Unix코드를 사용하지않고 만든 Unix와 유사한 OS, POSIX는 만족하지만 Unix공식인증x

+ Linux Kernel(운영체제의 핵심부분 by Linus Torvalds)

= GNU / Linux

Linux : 2015년 이후 git에서 만들어진 최다인원 프로젝트 (1400개 회사, 15000명 인원)

    누구나 사용, 누구나 변형하여 사용가능, 코드공개 필수 

    --> 수많은 운영체제 등장(Android, ubuntu, chromeOS..) 

 

7강. 소프트웨어 퀴즈 III

 

 네이티브 애플리케이션과 웹 애플리케이션 

1강. 플랫폼의 파편화

플랫폼 : 프로그램이 실행되는 하드웨어, 소프트웨어 환경

  하드웨어(운영체제의 플랫폼) > 운영체제(애플리케이션의 플랫폼) > 애플리케이션

플랫폼 의존성(Platform Dependency) : 각 플랫폼(Android, iOS)에 맞게 프로그램을 만들어야함

  --> 인력, 비용이 많이 소요됨 --> 플랫폼의 파편화(몇몇 기종 지원포기)

 

2강. 표준의 필요성

상호간의 약속 ex) 이어폰, 블루투스, usb, hdmi 등

 

3강. 크로스 플랫폼 I (가상머신)

크로스 플랫폼 : 여러 OS, CPU 등에서 동일하게 실행할 수 있는 환경

크로스 플랫폼을 위한 가상의 컴퓨터(Java Virtual Machine _ by Java) 탄생 , 이식성, 범용성

 

4강. 크로스 플랫폼 II (웹)

HTML/JavaScript - 브라우저(JVM의 역할) _ 플랫폼

국제표준화 기구 (ISO)

단점 : 브라우저 호환성 문제

http://html5test.com/ 에서 웹표준점수 확인가능

 

5강. 네이티브 애플리케이션과 웹 애플리케이션

웹 애플리케이션 : 웹상에서 애플리케이션처럼 작동, 브라우저를 거쳐 운영체제를 이용, 설치x, 배포x, 업데이트 실시간 반영, 주소공유 가능, 적은 투자와 노력으로 서비스 런칭 가능

네이티브 애플리케이션 : 운영체제를 직접적으로 이용, OS와 기기에 내장된 여러기능 활용 가능, 인터넷연결없이 이용가능, 설치-배포-업데이트 과정 필요(다운로드)

 

7강. 웹을 활용하는 여러 가지 방법

single-page application 페이지가 바뀌지않고 한페이지에서 보여져서 네이티브 애플리케이션처럼 느껴짐

hybrid web application 특정공간만 변경가능 ex) 애플리케이션에 들어가는 바뀌는 광고

progressive Web  Application (PWA) 설치없이 사용가능, 주소입력으로 접근가능, 실시간 업데이트, 인터넷없이 실행가능, OS기능 사용가능 등 single-page와 hybrid 의 장점을 합친 경우

반응형