일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Terraform
- 어뎁티브 해시 인덱스
- innodb구조
- 밑바닥부터 구현하는 컴퓨팅 시스템
- 컴퓨터 아키텍쳐
- 필수 스크립트
- 운용 시 유용한 쿼리
- ec2
- 스택머신
- 밑바닥부터 만드는 컴퓨팅 시스템
- 핵기계어
- InnoDB
- MySQL
- 리눅스
- 온라인 ddl
- 밑바닥부터 만드는 운영체제
- 메모리 세그먼트
- innodb 버퍼풀
- dff
- 안전하게 테이블 변경
- 도커
- 마운트
- performance스키마
- jack 문법
- vm번역기
- 핵심 데이터 모델링
- nandtotetris
- 구문 분석
- s3
- vm머신
- Today
- Total
목록2025/03 (4)
이것이 점프 투 공작소

이 책의 마지막 장인 운영체제입니다.OS는 컴퓨터에서 실행되는 모든 프로그램을 지원해야하기에 효율이 매우 좋아야합니다.OS의 시간 및 공간 효율성이 높을수록 응용프로그램의 성능 또한 올라갑니다.운영체제는 보통 고수준언어로 작성되어 바이너리 형식으로 컴파일됩니다.let n = Keyboard.readInt("Enter a number : ") 위와 같은 명령어가 실행되면, 프롬프트에 Enter a number: 라는 문자열이 표시됩니다.그러려면 String 객체가 생성되고 각 글자를 char 값 배열로 초기화합니다.이후 문자열을 스크린에 한 번에 하나씩 렌더링하며, 다음 문자가 물리적으로 표시되어야하는 커서 위치를 업데이트합니다.또한 사용자가 키보드의 특정키를 누를때까지 기다리는 루프 또한 준비되어야하고 ..

컴파일러고수준 프로그램을 vm코드로 변경해주는 일종의 번역기입니다.고수준 언어는 객체와 배열등 다양한 추상적 개념들이 있지만 컴파일러의 vm코드에서는 스택과 가상 세그먼트만 사용 가능합니다.잭 컴파일러는 jack 코드를 vm 코드로 변환합니다. 각각의 파일들은 각각의 vm코드로 변환되며 (filename.jack -> fileName.vm)서브루틴(생성자, 메서드 등)들은 fileName.subName으로 변환됩니다. 앞장에서 다뤘던 요소 Tokenizer를 포함하여 총 5개의 모듈이 만들어져야 합니다. 1. JackCompiler입력된 jack 파일을 vm파일로 변환하는 핵심 모듈 , JackToknizer를 호출해여 입력을 전달하고 vm파일을 반환합니다.이후 SymbolTable, VMWriter를 ..

컴파일 과정은 크게 둘로 나뉩니다.먼저 프로그램의 구문(syntax)를 이해하고, 그 구문을 통해 프로그램의 의미(semantics)를 찾습니다.예를 들어 프로그램 코드를 분석(parsing)해서 배열을 선언하거나 객체를 조작하려고 한다는 사실을 파악했다고 하면,그 언어의 구문을 이용해 코드를 다시 표현 할 수 있습니다. 이를 구문 분석(syntac analysis)라고 부릅니다.구문 분석기는 tokenizer와 parser로 나뉩니다.두번째 과정인 코드 생성(code generation)은 다음장에서 다룹니다. 핵 플랫폼에서는 구문 분석기가 소스코드의 구문 구조를 반영하는 xml 마크업 파일을 출력하도록 하는 것 입니다.구문 분석기에서 만든 xml 파일을 code generator가 사용합니다.Toke..

이제는 핵 플랫폼의 고수준 언어 Jack이 드디어 나타났습니다.기본적으로 java, c++같은 객체기반 언어라고 합니다.상속은 지원하지 않지만, 여러가지 응용프로그램을 만들수 있다고합니다. 잭은 여기 플랫폼에서만 사용되는 언어이기에 잭을 학습한다기 보다는'컴파일러와 os를 개발할 때 지지대 역할을 하는 언어'정도로만 생각하고 학습하려합니다.Hello World컴파일된 잭 프로그램이 실행될 때는 항상 Main.main함수에서 실행됩니다.잭은 표준 클래스 라이브러기가 존재하며 이를 잭 OS라이브러리라고 합니다.절차적 프로그래밍과 배열 처리변수 할당 및 반복을 처리하는 전형적인 명령문들입니다.keyboard와 Output은 os라이브러리의 클래스입니다.잭에서 Array객체는 타입과 상관없이 모든 값들을 저장 ..