SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Let's geek! (1)
Ju-yeong Park
ND Technologies
Prerequisite
● C 언어에 대한 깊은 이해
● 컴퓨터 시스템에 대한 기본적인 이해
● 어셈블리 언어 경험
● 정의롭고 아름다운 마음 (?)
Syllabus
1. 가상 머신 설계 및 구현
a. 이론 습득 및 예제 분석
i. 튜링 기계 및 튜링 완전
ii. 명령어 셋의 다양한 종류
iii. 주소 지정 방식 및 MMU
iv. I/O와 인터럽트
b. 설계 및 구현
2. 만든 가상 머신을 위한 프로그래밍 언어 설계
및 구현
3. 만든 프로그래밍 언어로 운영체제 설계 및 구
현
Turing completeness?
● 수학적 문제를 기계적으로 해결할 수 있다는
계산 모델 = 튜링 기계
● 어떤 다른 계산 모델이 튜링 기계로 나타낼 수
있는 프로그램을 모두 나타낼 수 있고, 그 역
도 성립함 = 튜링 완전
● 예: Brainfuck
Instruction set
● RISC vs. CISC
○ RISC(Reduced Instruction Set Computer)
○ CISC(Complex Instruction Set Computer)
● Opcode & Operand
● SISD, SIMD, MIMD, MISD
● 1 Address Code, 2 Address Code, 3
Address Code
Adressing mode
● Immediate addressing mode
● Register addressing mode
● Direct addressing mode
● Indirect addressing mode
○ Register
○ Memory
● Relative addressing mode
● Stack addressing mode
MMU(Memory Management Unit)
● Translation
Interrupt
● External interrupt
● Exception/Trap
● Software interrupt
예제 분석 (1)
명령어, 총 17개
[opcode 1바이트]
[operand 당 2바이트]
16비트 컴퓨터
? 분기문. 두개가 같으면
= 메모리에 즉치
l 메모리 복사
+ 더하기
- 빼기
* 곱하기
/ 나누기
m 나머지 연산
o OR
a AND
x XOR
n NOT
i 인터럽트 호출
p 푸시
P 팝
h 한 클럭 쉬기
H 컴퓨터 종료
예제 분석 (2)
VCPU
Main memory
(size: 64kb)
Console driver
(80x25)
Interrupt
Controller
IRQ 0: Timer
IRQ 1: Keyboard
IRQ 2: Reserved
IRQ 3: Reserved
예제 분석 (3)
● 메모리 맵
00x0000~0x000F: 레지스터 (범용 레지스터 4개 (R0-R3), 차례대로 SP, SB, FL, IP)
0xFFFF 00x0010~0x0017: 인터럽트 벡터 테이블 (0-3)
0x0018: 키보드 스캔 코드 레지스터
00x0820~0x0FFF: 비디오 콘솔 메모리
예제 분석 (4)
● 인터럽트 구현
● 인터럽트 0번 발생
● Interrupt Vector Table에서 Handler의 주소를 찾음 ( 0x0010 )
● 스택에 현재 IP를 저장하고, 핸들러로 점프함
● 처리 후 핸들러에서 IP를 복구 시켜줌
How multitasking works
● Guess how it works!
Let's geek!
구현해보자.

Weitere ähnliche Inhalte

Ähnlich wie Let's geek! (1)

Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 CHeesuk Kang
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제Lee Sang-Ho
 
MGS 툴세미나
MGS 툴세미나MGS 툴세미나
MGS 툴세미나Bonex Gu
 
장재화, Replay system, NDC2011
장재화, Replay system, NDC2011장재화, Replay system, NDC2011
장재화, Replay system, NDC2011재화 장
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)Sang-Kyu Park
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?내훈 정
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제Kyungryul KIM
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법NAVER D2
 
TestBCD2017-1(answer)
TestBCD2017-1(answer)TestBCD2017-1(answer)
TestBCD2017-1(answer)Yong Heui Cho
 
소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해중선 곽
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나Daniel Shin
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 

Ähnlich wie Let's geek! (1) (20)

Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 
Processor
ProcessorProcessor
Processor
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 C
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제
 
10
10 10
10
 
MGS 툴세미나
MGS 툴세미나MGS 툴세미나
MGS 툴세미나
 
장재화, Replay system, NDC2011
장재화, Replay system, NDC2011장재화, Replay system, NDC2011
장재화, Replay system, NDC2011
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
 
Cpu basic
Cpu basicCpu basic
Cpu basic
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
TestBCD2017-1(answer)
TestBCD2017-1(answer)TestBCD2017-1(answer)
TestBCD2017-1(answer)
 
소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 

Let's geek! (1)

  • 1. Let's geek! (1) Ju-yeong Park ND Technologies
  • 2. Prerequisite ● C 언어에 대한 깊은 이해 ● 컴퓨터 시스템에 대한 기본적인 이해 ● 어셈블리 언어 경험 ● 정의롭고 아름다운 마음 (?)
  • 3. Syllabus 1. 가상 머신 설계 및 구현 a. 이론 습득 및 예제 분석 i. 튜링 기계 및 튜링 완전 ii. 명령어 셋의 다양한 종류 iii. 주소 지정 방식 및 MMU iv. I/O와 인터럽트 b. 설계 및 구현 2. 만든 가상 머신을 위한 프로그래밍 언어 설계 및 구현 3. 만든 프로그래밍 언어로 운영체제 설계 및 구 현
  • 4. Turing completeness? ● 수학적 문제를 기계적으로 해결할 수 있다는 계산 모델 = 튜링 기계 ● 어떤 다른 계산 모델이 튜링 기계로 나타낼 수 있는 프로그램을 모두 나타낼 수 있고, 그 역 도 성립함 = 튜링 완전 ● 예: Brainfuck
  • 5. Instruction set ● RISC vs. CISC ○ RISC(Reduced Instruction Set Computer) ○ CISC(Complex Instruction Set Computer) ● Opcode & Operand ● SISD, SIMD, MIMD, MISD ● 1 Address Code, 2 Address Code, 3 Address Code
  • 6. Adressing mode ● Immediate addressing mode ● Register addressing mode ● Direct addressing mode ● Indirect addressing mode ○ Register ○ Memory ● Relative addressing mode ● Stack addressing mode
  • 8. Interrupt ● External interrupt ● Exception/Trap ● Software interrupt
  • 9. 예제 분석 (1) 명령어, 총 17개 [opcode 1바이트] [operand 당 2바이트] 16비트 컴퓨터 ? 분기문. 두개가 같으면 = 메모리에 즉치 l 메모리 복사 + 더하기 - 빼기 * 곱하기 / 나누기 m 나머지 연산 o OR a AND x XOR n NOT i 인터럽트 호출 p 푸시 P 팝 h 한 클럭 쉬기 H 컴퓨터 종료
  • 10. 예제 분석 (2) VCPU Main memory (size: 64kb) Console driver (80x25) Interrupt Controller IRQ 0: Timer IRQ 1: Keyboard IRQ 2: Reserved IRQ 3: Reserved
  • 11. 예제 분석 (3) ● 메모리 맵 00x0000~0x000F: 레지스터 (범용 레지스터 4개 (R0-R3), 차례대로 SP, SB, FL, IP) 0xFFFF 00x0010~0x0017: 인터럽트 벡터 테이블 (0-3) 0x0018: 키보드 스캔 코드 레지스터 00x0820~0x0FFF: 비디오 콘솔 메모리
  • 12. 예제 분석 (4) ● 인터럽트 구현 ● 인터럽트 0번 발생 ● Interrupt Vector Table에서 Handler의 주소를 찾음 ( 0x0010 ) ● 스택에 현재 IP를 저장하고, 핸들러로 점프함 ● 처리 후 핸들러에서 IP를 복구 시켜줌
  • 13. How multitasking works ● Guess how it works!