C언어에서 실수를 저장하는 방법을 알아보자. 프로그래밍 언어마다 다를 수 있겠지만, 원리는 비슷하기 때문에 새로운 프로그래밍 언어를 배워도 해석하기 수월할 것이다.컴퓨터 내부는 전부 2진수로 되어 있다고 한다. 10진수를 2진수로 저장하는 방법은 위와 같이2^i \*
Compliation System중 Compliation 단계에 생기는 Aseembly program인 source.s의 기본 연산자들과 피연산자들을 알아본다.피연산자들과 Addressing Mode를 알아본다.C언어에서 객체를 생성하고 값을 assignment하는 과
Week 7-1에서 배운 mov instructor는 operands(피연산자)를 중심으로 바라보았다. 이번 시간엔 타입이 다른 operands에 따른 operation의 변화와 다른 종류의 opertion을 살표본다.예를 들어, long type varname = i
조건이 있는 if문이나 loop를 내부적으로 어떻게 처리하는 지를 알아보자.instruction을 어셈블리어로 확인하여 동작 방식을 알아보자.컴파일 최적화 옵션은 -Og를 선택한다. -O0은 조금의 비효율성이 남아있고 -O1은 최적화가 강해 코드를 확인하기 어렵다.st
procedure, caller, calle 등의 terminology와 stack pointer Runtime에 stack 등을 알아보자.caller는 함수를 호출한 부분, calle는 함수 그 자체를 생각하면 된다. caller가 함수를 호출하면 calle인 함수
메모리 영역의 구조와 스택상의 버퍼 오버플로우를 알아보자.메모리 구조를 살펴보자. 메모리 구조중 스택을 중점적으로 살펴볼 것이다.Stack: runtime stack이다. 8MB 제한에 지역변수들이 저장된다.Heap: 동적할당된 변수들이 저장된다. malloc(), c
C언어의 기본타입(Basic types) 중 float을 다룬적이 있다. 이번엔 기본 타입의 확장(Derived types) 중 세 가지를 다룰 것이다.C언어의 pointer, array, strcture의 기본 문법이 아닌 내부 동작 방식을 어셈블리어로 확인하며 알아
이전 포스트에서 공부한 Assemble 단계에서
이전 포스트에서 정적 링킹을 정리하였다. 이번엔 동적링킹을 알아보자.만약 개발자가 자신의 프로그램에 새로운 라이브러리를 추가하려면 어떻게 해야할까?라이브러를 하나의 소스파일에 넣어 자신의 프로그램과 링킹한다.이 방법은 편하지만 공간과 시간 효율이 떨어진다.각각의 함수들
ExceptionsInterruptsSystemp CallHandling Error CodeCPU는 특정 프로세스를 처리할 때 두 가지의 모드로 처리를 할 수 있다. 이는 Mode bit(1비트 or 2비트로 모드를 나타냄, 컨트롤 레지스터에 존재)를 통해 두 가지의
ProcessContext SwitchingConcurrent Proceses: 병행성은 Multiprocess(+ 4가지의 syscall), Multithreading, 동기화와 데드락, 스케줄링, 분산프로그래밍(어떠한 프로세서들에게 할당할 것인가?) Process
Exit(): 프로세스 종료Zombie process and Orphan processWait(): 자식의 exit state를 받음.Waitpid(): 특정 자식의 exit state를 받음Execution optionsSignal프로세스가 종료되는 세 가지 이유는
Unix I/OFile and DirectoryInode Table and File TableFile Descriptor TablePathname ResolutionUnix I/O vs. Standard I/OFILE vs File descriptorStandard I
Data Structures for System level I/ONo sharingFile sharingInherits its parent’s open filesRedirection이전 포스트에서 알아본 파일을 open 했을 때의 형태이다. Open file descr
지금까지 배운 메모리 이미지이다. .bss, .data, .text에 들어가는 전역함수, 변수들은 linking-time(compile-time)에 실행파일에 만들이지고 run-time에 메모리에 할당된다. 이를 Static Allocation(정적할당)이라 부른다.그