1. Thread? 한마디로 ‘프로세스 내에서 실행되는 흐름’이라고 말할 수 있다. 스레드들은 해당 프로세스의 상태와 리소스를 공유하며, 동일한 주소 공간에 있다. 이들은 각각의 stack만 따로 할당 받고 code, data, heap은 공유한다. (stack은 지역변수가 저장되는 곳이다. 이를 생각해보면 지역변수는 각자 Thread가 할당된다는 것을 알 수 있다. 또한 독립적인 함수 호출을 가능하게 한다.) 헷갈린다면, 파이썬 스크립트 파일을 생각하면 쉽다. 파이썬의 파일을 실행시키면 한줄 파일이 실행되는데, 이렇게 실행되는 일련의 흐름이 곧 스레드이다. 일반적으로 하나의 프로세스는 하나의 스레드로 시작되며, 이를 메인 스레드라고 한다. 스레드를 추가로 생성하지 않는 한 모든 프로그램은 메인 스레드에..
1. Process 간단히 설명하자면, 1) 실행 중인 프로그램 2) 컴퓨터에서 실행되는 프로그램의 인스턴스 3) 프로세서에 할당되고, 실행될 수 있는 엔터티 4) 일련의 명령 실행과, 현재 상태 및 관련 시스템 리소스 등을 포함하는 전반적인 활동 프로그램 자체는 생명이 없다. 프로그램은 보조 기억장치에 존재하며, 실행되기를 기다리는 명령어와 정적인 데이터의 묶음이다. 이 프로그램의 명령어와 정적 데이터가 메모리에 적재되면 생명이 있는 프로세스가 된다. 이 프로세스는 작업(Job), 태스크(Task)라고도 한다. 2. Process Control Block PCB라고 불리는 Process Control Block에는 프로세스에 대한 여러 요소(Element)들이 저장되어있는데, 이는 OS가 여러 프로세스..
1. print - push %rbp : rbp의 데이터를 스택의 최상위에 밀어넣는다 sp 레지스터는 포인터의 크기인 8byte만큼 증가 (64bit의 경우 8byte, 32bit의 경우 4byte) - mov %rsp, %rbp : mov = 데이터를 복사하는 명령어 위의 경우엔 rsp의 값을 rbp로 복사 -> rsp와 rbp의 위치가 같아짐 - sub $0x10, %rsp : rsp의 주소를 0x10 (=16) 뺀다 미리 코드에 있는 변수들의 크기를 보고, 필요한 공간을 할당 - movl $0x1, -0xc(%rbp) : movl = 32bit를 다룬다는 의미, mov와 movl은 크게 다르지 않음 rbp에서 0xc만큼 떨어진 곳에 1을 저장한다 (12에서 4byte = 16byte , 즉 sub해..
0. permission의 역할 다른 운영체제에 비해 리눅스의 주요 차이점은 여러 사용자를 가질 수 있는 것이다 리눅스는 시스템에 동시에 접근할 수 있는 여러 사용자를 허용하도록 설계되어있다 이 멀티사용자 설계가 제대로 작동하기 위해서는 다른 사용자로부터 사용자를 보호하는 방법이 필요하다 이것이 권한이 제 역할을 발휘하는 부분이다 (https://nolboo.kim/blog/2015/08/18/linux-users-groups/) 1. 소유권과 허가권 일반적으로 소유권을 가진 자가 허가권을 설정 허가권 : 어떠한 파일이나 디렉터리를 소유하여 지배하는 권리 소유권 : 파일이나 디렉터리에 접근 권한을 설정하는 권리 (지금까지 앞 포스팅에서 했던 건 허가권) 2. 퍼미션을 지정하는 과정 -사용자가 파일의 권한..