[학교 수업]/[학교 수업] 시스템 프로그래밍

Some more Arithmetic Operations 2024.09.28 - [학교 수업/시스템 프로그래밍] - [시스템 프로그래밍] Race Condition [시스템 프로그래밍] Race ConditionAssembly Programmer's View Programmer-Visible StatePC: Program CounterAddress of next instruction: 다음 명령의 주소값을 갖습니다.Called "RIP" (instruction pointer register in x86-64)Register File: 데이터가 있는 곳을 그냥 File이라hw-hk.tistory.com에서 봤었던 Assembly operations 이외의 명령어들은 다음과 같습니다.  Address Com..
Simple Shell Example New problems with Simple shell Example 2024.09.28 - [학교 수업/시스템 프로그래밍] - [시스템 프로그래밍] Race Condition [시스템 프로그래밍] Race ConditionAssembly Programmer's View Programmer-Visible StatePC: Program CounterAddress of next instruction: 다음 명령의 주소값을 갖습니다.Called "RIP" (instruction pointer register in x86-64)Register File: 데이터가 있는 곳을 그냥 File이라hw-hk.tistory.com2024.09.24 - [학교 수업/시스템 프로그래밍] ..
Assembly Programmer's View Programmer-Visible StatePC: Program CounterAddress of next instruction: 다음 명령의 주소값을 갖습니다.Called "RIP" (instruction pointer register in x86-64)Register File: 데이터가 있는 곳을 그냥 File이라고 부릅니다. 그냥 Register공간입니다.Heavily used program data: 자주 사용하는 프로그램의 데이터가 있는 공간입니다.Condition Codes: CPU안에 있는 또 다른 메모리공간Store status information about most recent arithmetic operationUsed for condit..
kill() System Call Sends a signal "sig" to a process "pid"pid에 해당하는 프로세스에 sig에 해당하는 signal을 보내는 시스템 콜 메소드입니다.int kill(pid_t pid, int sig)만약 성공했다면 0을, 실패하거나 오류가 발생했다면 -1을 return합니다. + 이때, sig값에는 signal ID를 넣어주어도 되지만, kill()을 담고있는 header file에 #define을 통해 signal NAME마다 signal ID가 맵핑되어있기 때문에, signal NAME을 넣어주어도 됩니다. 아래는 kill()의 예시입니다:void fork12(){ pid_t pid[N]; int i, child_status; for (i=0;..
Signals Small message that notifies a process that an event of some type has occurred in the system시스템 안에서 일어났던 어떤 종류의 event를 알려주는 작은 메시지를 signal이라고 합니다.Sent from the kernel (sometimes at the request of another process) to a processkermel에서 signal을 process로 보냅니다. 가끔은 (* 주로 kill() system call) 프로세스에 의해 signal이 보내지기도 합니다. 이는 kernel에게 signal을 보내고싶은 process가 요청을 하고 실질적인 signal은 kernel에서 signal을 받는 p..
쉘의 구성 root@e7f17962cb98:/home/ubuntu# root: 사용자 이름@e7f17962cb98: 호스트 이름/home/ubuntu: 현재 디렉토리#: 사용자 구분, $는 일반 사용자, #은 루트 사용자. 파일(* File) 리눅스는 모든 것을 파일로 취급합니다. 컴퓨터의 연결되는 장치(* device)또한 파일로 취급합니다.숨김 파일은 .(* dot)으로 시작합니다. 예를 들어 .hidden_file은 숨김 파일입니다. 디렉토리(* Directory) 윈도우의 폴더의 개념과 같습니다./: 최상위 디렉토리, 절대경로의 시작점/root: root 계정의 홈 디렉토리/home: 일반 사용자 계정의 홈 디렉토리디렉토리 경로는 slash(/)로 구분하여 계층적으로 표현합니다. 이때 경로를 표현..
Compilation Process Processing phase원본 C프로그램을 '#'으로 선언된 경로에 따라 수정하는 단계.(* .c → .i 확장자) Compilation phaseC프로그램을 어셈블리 언어 프로그램으로 번역하는 단계.(* .i → .s 확장자) Assembly phase어셈블리 언어 프로그램을 기계어 프로그램으로 번역하는 단계.(* .s → .o 확장자)  Linking phase실행 파일을 만들기 위한 필수적인 객체들을 병합하는 단계. printf.o와 같은 객체들을 병합하는 단계입니다.(* .o → .exe 확장자) 위 단계를 그림으로 보면 다음과 같습니다: GNU Compiler Collection(* GCC) GCC를 통해 컴파일 시킬 수 있습니다.파일안에 p1.c와 p2...
Zombies 프로세스가 종료됐지만, 여전히 시스템의 자원을 소비하는것.이때, 시스템의 자원은 PCB(* Process Control Block)이다. 해당 프로세스를 관리할 수 있는 정보들을 담고 있는 정보들로 운영체제 커널의 자료구조입니다.https://jwprogramming.tistory.com/16 PCB(Process Control Block)란?OS의 기본. Process Control Block(PCB)입니다. - 프로세스 제어 블록(Process Control Block, 줄여서 PCB)은 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조입니다. PCB는 운jwprogramming.tistory.com 해당 PCB에는 PID가 있기 때문에, Zombie가 계..
건대다니는 컴공생
'[학교 수업]/[학교 수업] 시스템 프로그래밍' 카테고리의 글 목록 (3 Page)