CS/OS
-
macOS shell을 bash에서 ZSH로 바꾸기CS/OS 2022. 4. 11. 16:58
Shell(셸) 터미널 환경에서 운영체제의 커널과 사용자의 유저 스페이스를 이어 주는 인터페이스 역할을 하는 프로그램이다. 인터페이스 역할 외에도 셸 스크립트(Shell Script)라는 셸 전용 프로그래밍 언어를 사용해서 터미널 환경에서 다양한 자동화를 실행할 수 있다. Bash(Bourne-Again Shell) 거의 대부분의 리눅스 기반 운영체제에서 default Shell로 설치된다. ZSH(Z shell) 'Oh My Zsh(설정 관리 툴)로 인해 인기를 얻고 있는 shell이다. 기본적인 기능은 Bash와 큰 차이는 없으나 여러 다양한 편리한 기능을 제공한다. Oh My Zsh이라는 ZSH 설정 매니저 플러그인을 통해서 편리하게 Shell을 설정할 수 있다. Bash -> ZSH 1. ZSH을..
-
가상메모리CS/OS 2022. 3. 20. 21:07
가상 메모리 메모리 관리 기법 중 하나로 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법 사용자 프로그램이 물리 메모리의 제약에서 벗어남 각 프로그램이 더 작은 메모리를 차지하기 때문에 더 많은 프로그램을 동시 수행 가능한 것처럼 보임 프로그램을 메모리에 올리고 swap 하는데 필요한 IO 횟수가 줄어듦 가상 메모리가 왜 필요할까? 프로세스란 실행되는 프로그램이며, 이는 메인 메모리에 올라와있어야 한다. 하지만 메인 메모리의 공간은 그렇게 크지 않고 여러 개의 프로그램을 실행할수록 할당되는 공간의 크기는 줄어들고, 어느새 공간은 꽉 차게 될 것이다. 다른 프로세스를 사용하기 위해 기존의 프로세스를 스왑 영역으로 내보내고 올리는 Swap In, Swap Out을 빈번히 한다면 큰..
-
Blocking & Non-Blocking 그리고 Sync & AsyncCS/OS 2022. 3. 5. 15:33
Blocking & Non-Blocking 제어할 수 없는 대상의 처리 방법이다. (ex: IO, 멀티쓰레드 동기화) 여기서 키워드는 #제어권의 반환에 대한 관점이다. Blocking 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 예를 들어, c언어의 제어권을 가진 main 함수에서 a라는 함수를 호출 했을 때 a라는 함수가 main 함수로부터 제어권을 받게되고, main 함수는 block 상태에 빠진다. a라는 함수를 실행하고 리턴값과 함께 제어권을 다시 main함수에게 반환을 하면 그때 main함수는 block 상태에서 빠져나오게 된다. Non-Blocking 다른 주체의 작업에 관련없이 자신의 작업을 하는 것 예를 들어, bl..
-
Process & ThreadCS/OS 2022. 3. 4. 15:24
Program - 실행되기 전 상태의 명령어, 코드 및 정적인 데이터의 묶음 Process - 실행 중인 Program - 운영체제로부터 시스템 자원을 할당 받는 작업의 단위 Stack (매개변수, 지역 변수 등 임시적인 자료: return 값) . . . Heap (동적으로 할당되는 메모리: new 등) Data (전역 변수: Static 등) Text (Program의 코드) 운영체제는 process를 관리하기 위해 각 process에 대한 PCB를 갖는다. PCB (Process Control Block) - 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조 - 각 프로세스는 운영체제에서 PCB로 표현 - 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 ..
-
OS 운영체제: 스케줄링(Scheduling)CS/OS 2022. 2. 27. 16:35
더보기 1. 스케줄링이란? 2. 스케줄링의 목표 3. 스케줄링의 종류와 알고리즘 4. 스케줄링의 기준(Scheduling Criteria) CPU스케줄링이란? CPU를 프로세스에게 효율적이고, 공정하게 사용하기 위해 우선순위를 배정하는 알고리즘, 방법을 의미합니다. (Ready queue에 있는 프로세스를 스케줄링하고 dispatch 하는 것) 스케줄링의 목표 1. Batch System: 가능한 많은 일을 처리하는 것(throughput이 중요) 2.Interactive System: 빠른 응담과 적은 대기 3.Realtime System: 기한(Deadline) 맞추기 스케줄링의 종류와 알고리즘 1. 선점 스케줄링(Preemptive Scheduling) OS가 CPU의 사용권을 선점하여 특정 알고리..