[Apache] macOS homebrew Apache 설치 및 관련 명령어
·
etc
homebrew Apache 설치1. 내장 아파치 중지별도의 설치 없이 macOS에는 내장 Apache가 설치되어있다. 내장 아파치를 중지시키고 내장 아파치 자동 실행을 막는다.sudo apachectl stopsudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null2. homebrew로 설치brew install httpd 실행 관련// 실행brew services start httpd// 중지brew services stop httpd// 재시작brew services restart httpd 상태 확인httpd -V 실행 에러 발생 시Bootstrap failed: 5: Input/output e..
[운영체제] 프로세스 간 통신(IPC, Inter-Process Communication)
·
CS/운영체제
0. 개요프로세스 혹은 스레드는 독립적으로 실행된다. 프로세스나 스레드가 협업하거나 여러 데이터를 병렬로 처리하기 위해서는 데이터를 주고 받아야한다. 같은 프로세스 안의 스레드 사이에서는 데이터를 주고 받는 것이 어렵지 않지만, 서로 다른 프로세스는 사용하는 메모리 영역이 다르기 때문에 공유된 메모리를 통하여 통신하는 것이 쉽지 않다. 1. 프로세스 간 통신 분류통신 방향에 따른 분류종류통신 기법통신 기기양방향(duplex) 통신소켓 이용 통신전화반양방향(half duplex) 통신 무전기단방향(simplex) 통신공유 메모리나 파일 이용 통신, 파이프 통신모스 부호 통신 구현 방식에 따른 분류공유 메모리를 이용한 통신의 가장 큰 단점은 상대방이 언제 데이터를 보낼지 받는 쪽에서 알 수 없다는 점이다. ..
[운영체제] 스케줄링 알고리즘
·
CS/운영체제
스케줄링 알고리즘 종류비선점형(non-preemptive) 알고리즘 프로세스가 CPU를 할당받으면 작업이 끝날 때까지 CPU를 놓지 않는 방식, 과거 일괄 작업 시스템에서 사용선점형(preemptive) 알고리즘 프로세스가 CPU를 할당받으면 작업중이더라도 운영체제가 CPU를 빼앗을 수 있는 방식, 문잭 교환 같은 부가적인 작업으로 인해 낭비가 생긴다는 단점이 있으나 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답 시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합 스케줄링 알고리즘 선택 기준CPU 사용률: 전체 시스템의 동작 시간 중 CPU가 사용된 시간을 측정처리량: 단위 시간당 작업을 마친 프로세스의 수대기 시간: 작업을 요청한 프로세스가 작업을 시작하기 전까지 대기하는 시간응답 시..
[운영체제] 프로세스 다중 큐(multiple queue)
·
CS/운영체제
다중 큐프로세스의 중요도는 PCB에 표시된다. 이때 CPU 스케줄러는 모든 프로세스 제어 블록을 뒤져서 우선순위가 가장 높은 프로세스에 CPU를 할당한다. 그러나 매번 모든 프로세스 제어 블록을 검색하는 것은 번거롭다.때문에 다른 상태로 넘어가기 위해 대기 중인 프로세스가 모인 준비 상태와 대기 상태는 다중 큐의 형태로 관리되어 좀 더 효율적으로 작동된다. 준비 상태 다중 큐 준비 상태 큐는 CPU를 할당받기 위해 대기 중인 프로세스가 들어가는 큐이다. 우선순위에 따라 여러 개의 큐를 만들어 관리하면 각 큐 내에서 효율적으로 프로세스를 선택하고 CPU를 할당할 수 있다.프로세스는 준비 상태에 들어올 때마다 자신의 우선순위에 해당하는 큐의 마지막에 삽입된다.준비 상태 다중 큐는 한 번에 하나의 프로세스를 ..
[운영체제] 스케줄링 시 고려 사항
·
CS/운영체제
1. 선점형과 비선점형 스케줄링선점형 스케줄링은 어떤 프로세스가 CPU를 할당받아 실행중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 방식, 비선점형 스케줄링은 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 방식이다.선점형 스케줄링은 문맥 교환 같은 부가적인 작업으로 인해 낭비가 생긴다는 단점이 있지만 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답 시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합하다. 대부분의 저수준 스케줄링은 선점형 스케줄링 방식을 사용한다.비선점형 스케줄링은 과거 일괄 작업 시스템에서 사용하던 방식이다. 2. 프로세스 우선순위우선순위가 있다는 것은 프로세스의 중요도가 다르다는 의미이다. CPU 스케줄러는 커널 프로세스에 일반 프로세스..
[운영체제] CPU 스케줄링 단계와 목적
·
CS/운영체제
1. CPU 스케줄링 단계 고수준 스케줄링장기 스케줄링, 작업 스케줄링, 승인 스케줄링이라고 하기도 한다.시스템 내의 전체 작업수를 조절한다. 작업은 운영체제에서 다루는 일의 가장 큰 단위로, 1개 또는 여러 개의 프로세스로 이루어진다.전체 시스템의 부하를 고려하여 어떤 작업을 시스템이 받아들일지 혹은 거부할지를 결정한다.고수준 스케줄링에 따라 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수가 정해진다. => 멀티 프로그래밍 정도저수준 스케줄링어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정한다.준비 상태 -> 실행 상태, 실행 상태 -> 대기 상태, 대기 상태 -> 준비 상태 등 프로세스 상태를 변화시키는 것을 예로 들 수 있다.저수준 스케줄링은 아주 짧은 시간 안..
[운영체제] 스레드
·
CS/운영체제
1. 스레드스레드는 프로세스의 코드에 정의된 절차에 따라 CPU에 작업을 요청하는 실행 단위이다.스레드 ID,  레지스터 값, 스택 등 실행에 필요한 최소한의 정보를 가진다.멀티 스레드의 스레드들은 프로세스의 자원을 공유한다. 2. 멀티 프로세스와 멀티 스레드멀티 프로세스문맥 전환 비용이 높음메모리에 중복되는 자원이 할당될 수 있음한 프로세스가 종료되어도 다른 프로세스는 영향 받지 않음멀티 스레드문맥 전환 비용이 낮음자원이 공유되어 효율성 향상하나의 스레드 문제로 인해 전체 프로세스가 영향을 받음
[운영체제] 프로세스 계층구조
·
CS/운영체제
1. fork()실행중인 프로세스를 복사한다. 이때 실행하던 프로세스는 부모 프로세스가 되고, 복사된 프로세스는 자식 프로세스가 된다.fork() 시스템 호출을 하면 프로세스 제어 블록을 포함한 부모 프로세스의 영역 대부분이 자식 프로세스로 복사된다.일부 변경되는 부분은 아래와 같다.프로세스 구분자(PID)메모리 관련 정보(메모리 위치 등)부모 프로세스 구분자(PPID)와 자식 프로세스 구분자(CPID) 2. exec()기존 프로세스를 새로운 프로세스로 전환하는 함수이다.기존 프로세스의 구조를 재활용한다.exec() 시스템 호출을 하면 코드 여역에 있는 기존 내용이 지워지고 새로운 코드로 바뀐다. 또한 데이터 영역이 새로운 변수로 채워지고 스택 영역이 리셋된다. PCB 중 프로그램 카운터 레지스터 값을 ..
[운영체제] 프로세스 제어 블록
·
CS/운영체제
1. 프로세스 제어 블록(PCB)프로세스를 실행할 때 필요한 중요한 정보를 보관하는 자료구조이다. 프로세스가 생성될 때 커널 영역에서 만들어져 프로세스 실행이 끝나면 폐기된다. PCB에 담기는 대표적인 정보는 아래와 같다.프로세스 ID: 특정 프로세스를 식별하기 위해 부여한 고유 번호레지스터 값: 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간값을 모두 복원 -> 실행 재개프로세스 상태: 실행, 대기, 준비 등 프로세스 상태CPU 스케쥴링 정보: 프로세스가 언제 CPU를 할당받을 지에 대한 정보메모리 정보: 프로세스가 어느 주소에 저장되어 있는지, 페이지 테이블 등사용한 파일과 입출력 장치 정보: 할당된 입출력 장치, 사용중인 파일 정보 2. 문맥 교환(Context Switch)한 ..