Pintos lab2 user programs 키워드 간단 정리

조성현·2021년 2월 4일
0

OS

목록 보기
4/9

📕 Project 2: User Programs

👉 User mode vs. Kernel mode

유저모드 : 사용자가 접근할 수 있는 영역을 제한 (사용자의 응용프로그램)
커널모드 : 모든 자원(source)에 접근,명령 가능

👉 Process

실행 중인 프로그램. 단순히 프로그램이 아니라 하드웨어 자원, 메모리, CPU등을 포함한 능동적인 개념

- Process Environment block (PEB)

프로세스 환경 블록. 프로세스 정보를 담고 있는 구조체

- Process identifier (PID)

프로세스 식별자. OS가 ㅇ각 프로세스를 식별하기 위해 할당하는 고유번호.
fork()에 의해 반환된다.

👉 User Stack vs Kernal stack

할당된 스택 메모리. 둘의 차이는 할당된 위치가 다르다. 그러므로 주소를 가리키는 스택 포인터 레지스터가 다르고, 메모리 접근 권한이 다르다. 둘의 위치가 다른 이유는 유저 스택 메모리의 단순한 segfault이 커널에 치명적이고, 이럴 경우 컴퓨터를 다시 껐다켜야 하기 때문이다.

👉 x86_64 calling convention

x86에서 함수가 다른 x64 함수를 호출하는 데 파라미터를 전달하는 방법에 대한 표준 프로세스 및 규칙
함수의 호출규약: https://ccurity.tistory.com/15

👉 Register vs. Memory

레지스터 : 직접 CPU의 ALU에 연결되어 현재 처리중인 자료(계산을 수행 중인 값)을 보관. SRAM으로 입출력이 무척 빠르다.
메모리 : 실행 중인 프로그램에 필요한 데이터와 명령어를 저장.

32bit CPU는 최대 4GB RAM 밖에 인식하지 못한다. 저장하려는 메모리 주소가 32bit 이상이라면, 그 메모리 주소는 이 레지스터에 저장할 수 없기 때문이다.

메모리와 레지스터 : https://velog.io/@sinyr119/메모리와-레지스터

👉 argument vector & argument count

c언어에서 실행시키면서 입력한 명령어
argv, 명령행 배열.
argc, 명령행 개수.

int main(int argc, char* argv[]){

}

👉 Executable Linkable Format (ELF) & loader

실행파일, 목적파일, 공유 라이브러리, 코어 덤프를 위한 표준 파일 형식
위키백과 - ELF 파일 형식

👉 system call (syscall)

응용 프로그램에서 OS에 있는 루틴을 실행시키고 싶을때 보내는 시스템 호출.
예) 디렉토리를 만드는 루틴, 특정한 디렉토리의 파일 목록을 읽어내는 루틴

!!CAUTION!! some system call’s semantic may differ from POSIX standards

  • filesys related
    • open, close, create, read, write, seek, tell, ...
  • process related
    • halt, exit, exec, fork, wait ...

👉 file descriptor

OS로부터 할당 되는 파일에 접근할 때 사용되는 정수 인덱스.
프로세스가 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터값을 이용해 지칭한다.
OS가 할당 시킬 때는 0(stdin), 1(stdout), 2(std error) 를 제외하고 사용되지 않는 가장 작은 값을 할당 시킨다.

- file descriptor table

프로세스에서 열린 파일의 목록을 관리하는 테이블

- dup2 syscall

파일 디스크립터를 복사하는 system call (실제 복사가 아닌 같은 곳을 가리키게됨)

profile
Jazzing👨‍💻

0개의 댓글