본문 바로가기

반응형

전체 글

(260)
[OS] Process Synchronization 1. Process Synchronization 동기화를 기준으로 프로세스들은 다음 두가지 종류로 구분된다. - Independent Process: 한 프로세스의 실행이 다른 프로세스의 실행에 영향을 주지 않는 프로세스 - Cooperative Process: 한 프로세스의 실행이 다른 프로세스의 실행에 영향을 주는 프로세스 Cooperative process의 경우 프로세스들이 서로의 작업을 수행할 때 영향을 주기 때문에 하나의 공유 메모리나 다른 프로세스에 접근하는 경우 매우 조심해야 한다. 이러한 프로세스 사이에 동기화를 하는 것을 프로세스 동기화 (Process Synchronization) 이라고 한다. 현재는 대부분 스레드 기준으로 스위칭이 일어나기 때문에 Thread synchronizat..
[OS] CPU scheduling CPU scheduling은 ready queue에 있는 프로세스 중 실행할 프로세스를 선택하는 방식을 의미한다. 각 알고리즘에 따라서 프로세스를 선택하여 ready 상태에 있는 프로세스를 running 상태로 변경한다. 1. Preemptive vs Non-preemptive (선점식 vs 비선점식) - Preemptive: 선점식 스케줄링은 CPU가 이미 어떤 프로세스를 실행하고 있는 중에 이를 중단시키고 새로운 프로세스를 할당하는 방식이다. - Non-preemptive: 비선점식 스케줄링은 CPU가 이미 프로세스를 수행 중인 경우, 프로세스가 끝나거나 IO를 만나게 될 때까지 프로세스 변경을 수행하지 못한다. 2. Scheduling Algorithms - FCFS (First Come First..
[OS] Process Scheduling 1. Process Scheduling 프로세스 스케줄링은 프로세스 매니저가 running process를 CPU에서 제거하고 프로세스 선택 기준, 전략에 따라 다른 프로세스를 선택하는 작업을 의미한다. 프로세스를 스케줄링이 수행되는 queue에는 세가지 종류가 있다. 다음 큐에 있는 프로세스들 중 하나를 선택하여 상태를 변경하는 작업을 수행한다. Job Queue: 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue: 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합 (ready 상태) Device Queue: Device I/O 작업을 대기하고 있는 프로세스의 집합 (waiting 상태) 2. 스케줄러의 종류 - Long-term scheduler or jo..
[OS] Process Management 1. Process Process는 실행 중에 있는 프로그램을 의미한다. 우리가 작성한 소스 파일이나 이를 빌드한 바이너리 코드는 모두 프로그램이다. 이런 프로그램이 실행되면 프로세스가 된다. 프로세스는 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있다. OS로부터 주소 공간, 파일, 메모리 등을 할당 받으며, 이것들을 총칭하여 프로세스라고 한다. 구체적으로 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 heap을 포함한다. 2. 프로세스 메모리 구조 1) Stack 프로그램이 자동으로 사용하는 임시 메모리 영역 지역변수, 매개변수, 리턴 값 등 잠..
[git] git submodule / subtree git 저장소 안에 또 다른 저장소가 필요한 경우 submodule 또는 subtree를 사용한다. 실제로는 여러 개의 개별 저장소이지만 개발자의 로컬에서는 하나의 저장소로 관리할 수 있도록 한다. 이 둘을 비교해보고 자신의 프로젝트에 맞는 방식으로 프로젝트를 관리하면 된다. 1. submodule git 저장소 안에 다른 저장소가 들어가 있는 개념이다. 상위 저장소에서 서브 모듈을 SHA 값, 하나의 바이너리처럼 취급하기 때문에 병합에 있어 복잡하다. 저장소가 병합되는 것이 아닌 최신 커밋의 내용으로 교체된다. 직접 서브모듈을 업데이트한 뒤 병합 후 푸쉬해야한다. .gitmodules를 통해 메인 프로젝트에서 sub 프로젝트를 관리할 수 있다. .gitmodules에는 submodule로 사용할 프로젝..
[OS] Operating System (운영체제) 1. OS (Operating System) OS, 운영체제는 사용자와 컴퓨터 하드웨어 사이에서 동작한다. 운영체제의 목적은 컴퓨터를 효율적으로 관리하고 제어하며 작동하는 것이다. 운영 체제는 사용자와 컴퓨터 하드웨어 간의 인터페이스 역할과 응용 프로그램의 실행 및 제어를 하기 위해 만들어진 시스템 소프트웨어를 의미한다. 다른 의미로는 항상 컴퓨터에서 실행되는 프로그램을 의미하기도 한다. (kernel) 운영 체제는 사용자와 하드웨어 간의 인터페이스 역할을 하는데 입출력과 메모리 할당과 같은 하드웨어 기능에 대해서 응용 프로그램과 하드웨어 사이의 중재 역할을 하여 자원 할당 및 프로그램들의 실행을 제어한다. 컴퓨터 전체를 관리 및 제어하기 때문에 컴퓨터를 사용하기 위해서 먼저 설치해야하는 기본 소프트웨어..
[Linux] scp (secure copy) 1. scp scp는 secure copy의 약자로 ssh 원격 접속 프로토콜을 기반으로 한 파일 전송 프로토콜이다. 원격으로 파일과 디렉토리 등을 보내고, 가져오는데 사용한다. 네트워크가 연결되어 있는 환경에서 ssh와 동일한 22번 포트와 identity file을 사용하여 파일을 송수신하기 때문에 보안적으로도 안정적이다. 2. 설치 scp는 ssh 프로토콜을 사용하여 통신하기 때문에 ssh 라이브러리가 설치되어 있어야 사용할 수 있다. ubuntu에서는 다음 명령어를 통해 ssh를 설치할 수 있다. sudo apt-get install openssh-server 3. 사용방법 - local -> remote 전송 1) 단일 파일을 원격지로 전송 scp [option] [filename] [remot..
[Python] urlparse 1. urllib.parse urllib.parse는 URL을 구성요소로 파싱하는 모듈이다. urllib.parse 모듈은 URL (uniform resource locator) 문자열을 addressing scheme, network location, path 등의 구성 요소로 구분하고, 이를 다시 URL 문자열로 결합하며, 상대 URL을 주어진 base URL을 기준으로 절대 경로로 변환하는 등의 기능을 수행한다. 이 모듈은 Relative Uniform Resource Locatorsd에 대한 인터넷 RFC에 맞춰 설계되었다. 지원하는 URL scheme들은 다음과 같다. - schemes: file, ftp, gopher, hdl, http, https, imap, mailto, mms, news..

반응형