컴파일러와 인터프리터
컴파일러
- 코드를 머신코드로 번역
인터프리터
- 코드를 한줄 한줄 바로바로 실행
초창기 언어
- 어셈블리어
- 기계어에 1대1로 대응하는 언어
- ex) A <=> 0과 1로만 이루어진 16진법 숫자
운영 체제 개요
Operating System 내부에서 움직이는 순서
- 컴퓨터
- input device → Operating System→ Application - Operating System- output device
OS의 중요한 기능 - 저장하기, 불러오기
- RAM(휘발성), HDD(비휘발성)
- RAM(random-access memory)
- DRAM(dynamic random access memory)
- SRAM(Static random-access memory)
- HDD(hard disk drives)
- SSD(solid-state drive)
- ROM(Read-Only Memory)
- CPU(central processing unit)
- cache(다음에 같은 작업을 할때 시간을 단축 가능하게 해주는 하드웨어
또는 소프트웨어 요소)
- register(데이터가 저장되는 작은 공간들(하드웨어로 분류) 중 하나)
여러 프로그램들을 동시에 실행 시키면 무엇이 문제가 되는가?
- 롤, 카카오톡, 크롬 등등 여러가지 프로그램을 동시에 사용할때 해당 데이터를 처리하는 공간이 서로 침범을을 할 수 있음
그럼 각기 프로그램들의 데이터 공간이 겹쳐도 이제껏 문제 없이 사용 되었던건가?
- 아니다. 이 문제를 해결 하는 것이 바로 운영체제이다. 각각의 프로그램들이 쓰는 데이터 공간을 서로 침범하지 않게 할당을 하고 더나아가서 효율적으로 데이터를 배분을 해서 컴퓨터 속도가 빠르게 하는 역할도 한다. OS가 존재하기에 유튜브를 시청하는 도중에 카톡이 알림을 볼 수 있거나 등 여러가지 프로그램들을 동시에 실행 시킬 수 있는 것이다.
운영체제 종류
UNIX
GNU/Linux
- 2015년 부터 깃으로 수많은 기업들이 참가해서 만든 운영체제
- 누구나사용, 누가나 변형 대신 리눅스 기반인 운영체제는기반으로한 반드시 코드 공개!
- 스마트폰 82퍼, 임베디드 62퍼, 슈퍼컴퓨터 99퍼가 리눅스 기반
네이티브 애플리케이션과 웹 애플리케이션
플랫폼
플랫폼 파편화
- 서로 다른 플랫폼을 어떻게 동작하게 해결하는가?
- 표준을 만들어 규격을 통일화 시킨다.
- 예시) 이어폰단자와 휴대폰, 블루투스, usb 단자, hdmi 케이블
- 소프트웨어의 플랫폼 파편화도 위의 예시와 마찬가지로 표준을 만들어 서로 호환이 되도록 문제를 해결한다.
- 이문제를 해결하기 위해서 나온 개념이 크로스 플랫폼!
❗크로스 플랫폼
- 어플리케이션을 만들때 프로그램과 플랫폼을 바로 연결하는 것이 아니라 둘 사이에 가상의 컴퓨터를 추가해서 프로그램과 플랫폼이 서로 합쳐질 수 없어도 서로 연결이 가능하게 해주는 것이다.
- 원리
- 예시
- Java
- 슬로건
- JVM(Java Virtual Machine)을 통해서 각기 다른 플랫폼과 호환이 되게 한다. 따라서 다른 플랫폼에 맞춰서 프로그램을 한번더 작성할 필요없이 자바의 슬로건처럼 한번적고 어디에서든 작동이 가능하도록 한다.
- ❓궁금
- 가상의 컴퓨터는 어떻게 각기 다른 플랫폼들과 호환이 되는 것인가? 연결 부위가 자유자재로 변형이 가능한 이유?
- ISO(international Organization for Standardization)
웹을 활용한 여러가지 방법
- single-page Application, Hybrid-Web Application, PWA(progressive Web Application)