목록Operation System (8)
Over the limit

젠킨스 빌드 시 자꾸 서버가 중단되는 문제가 발생했다.현재 프리티어 사용 중이므로 t2.micro의 RAM은 1G 밖에 되지 않는다.cpu 성능 업그레이드는 할 수 없기 때문에 메모리 관리를 하기로 결정했다. 스왑 메모리란?물리적 메모리 RAM 이 부족할 때, 하드 디스크나 SSD의 일부를 임시로 메모리처럼 사용하는 공간이다.즉, 메모리 부족 문제를 해결할 수 있는 방법 중 하나이다. 실제 메모리가 아닌, 디스크 사용이기 때문에 속도는 떨어질 수 있다는 점 유의해야한다. 리눅스에 Swap 메모리 설정하기 확인해보니 잔여 메모리가 많지 않은 상황이었음 1. 스왑 파일 생성2GB 스왑 파일을 생성하자sudo fallocate -l 2G /swapfile 2. 스왑 파일 권한 설정루트만 접근할 수 있..

리눅스 커널- 운영체제의 핵심:메모리 관리/파일 시스템/프로세스 관리/디바이스 제어 등 OS의 중추로서 컴퓨터 자원을 관리- 가장 큰 역할은, 컴퓨터의 물리적 자원과 추상화 자원을 관리하는 것.(추상화: 물리적으로 하나 뿐인 하드웨어를 여러 사용자들이 번갈아 사용하게 중재함으로써, 마치 한개의 하드웨어가 여러개인 것 처럼 보여지도록 하는 기술) 컴퓨터 시스템의 자원, H/W를 관리한다. 예를들어 윈도우를 처음 로딩할 때 나오는 로딩화면이 커널을 로딩하는 것이고, 항상 메인 메모리에 상주한다. 리눅스 쉘- 입력을 읽고 해당 명령행을 분석함- 커널은 기계어 등 어려운 언어를 가지고 있으므로 바로 쓰기 힘들다. 쉘을 이용하여 커널을 컨트롤한다. 사용자는 복잡한 커널 단위의 연산을 알 필요 없이 쉘 상의 ..

커널이란운영체제의 핵심적인 부분으로, 전원이 켜짐과 함께 메모리 위에 올라가는 운영체제의 부분을 말함.운영체제가 하드웨어에 있는 자원에 접근할 수 있도록 다리 역할을 해준다. 즉, 소프트웨어와 하드웨어 사이에 인터페이스를 제공하여 하드웨어 자원에 접근/관리를 용이하게 한다 커널의 기능메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행시스템 호출 및 보안: 프로세스의 서비스 요청을 수신 커널은 경영진(하드웨어)를 위해 일하는 비서라고 볼 수 있다.사용자로부터 수신되는 메시지(프로세스)를 경영진에게 전달하고, 어디에..

프로세스 간 메시지를 전송하거나, 공유 메모리로 공유된 자원에 여러개의 프로세스가 동시에 접근하면 Critical Section 문제가 발생한다.해결책으론, 데이터가 한 번에 하나의 프로세스만 접근하도록 하는 동기화 방식이 존재하고, 대표적으로 뮤텍스와 세마포어가 있다. 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는다. 뮤텍스(Mutex) - Key를 소유한 스레드/프로세스 만이 공유 자원에 접근할 수 있는 상호 배제 기법- Lock으로 잠궈버림, 방문 잠구듯이.. 열쇠 없이는 못 들어감- 공유가 불가능함, 단 하나의 스레드/프로세스만 접근 가능 세마포어(Semaphore)- 현재 공유자원에 접근할 수 있는 스레드/프로세스 수의 값을 따로 두어 상호 배제를 달성하..
[Source]- C언어 소스파일을 다운로드 받아 직접 컴파일 하여 프로그램을 설치하는 방법- 장점 : 환경설정 가능, 의존성 문제도 낮음- 단점 : 컴파일러를 이용해 컴파일하고 설치하므로 시간 소모됨. 환경 설정이 크리티컬 [Binary]- Source 버전으로 설치된 프로그램의 디렉토리를 압축한 파일을 이용해 설치 -> 압축만 해제하면 사용 됨- 리눅스에 따라 실행이 안될 수도 있음 [Package(RPM/YUM/APT-GET)]- RedHat 계열은 RPM(RedHat Program Manager)을 이용하여 프로그램 설치 및 삭제 관리- 장점 : 설치 및 삭제가 쉬움- 단점 : 프로그램 의존성 문제로 설치, 삭제에 어려움이 발생함- rpm 명령으로 설치가 가능하며 대부분 /usr 디렉토리에 설..

선점형 : MLFQ 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재의 프로세스를 중단시키고 CPU를 점유한다. 큐마다 서로 다른 CPU 시간 할당량을 부여 문제점) -starvation 기아 현상 : 우선 순위가 높은 프로세스만 계속 해서 들어오면 낮은 우선순위의 큐는 순서가 밀린다. -game the schdulr : time size를 사용하지 않고 i/o request를 적절한 타이밍에 보내 계속 우선 순위를 차지함. 비선점형 : SJF 한 프로세스가 CPU를 할당 받으면 작업 종료 후 CPU반환 시까지 다른 프로세스들은 CPU점유가 불가능하다. 준비 큐 작업 중에서 가장 짧은 작업부터 수행하기 때문에 평균 대기시간이 최소이다. 문제점) -starvation 기아..

System call이란? software interrupt의 일종으로 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 운영체제는 커널모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동된다. 여기서 프로그램 구동에서의 많은 부분을 차지하는 파일 읽기, 쓰기, 출력 등이 커널 모드를 사용하는데, System call을 통해서 커널모드의 기능을 유저가 사용할 수 있게끔 한다. System call -> kernal 모드 전환 -> 작업 수행 권한 부여 받음 -> 작업 수행 권한을 부여받지 않으면 해커들의 직접 접근이 가능해지므로 권한 부여 과정은 필수적이다. 위 그림과 같이 명령은 사용자가 직접 처리하는 것이 아니라 권한받은 커널 내부에서 처리한다. System c..

OS가 한번에 많은 일을 하거나, 멀티스레드 프로그램을 돌리다보면 Concurrency Problem을 겪을 수 있다. 멀티스레드는 생성 Overhead가 적고, Thread간의 통신이 간단하다는 장점을 가지고 있지만, 하나의 스레드에서 발생한 문제가 전체 프로세스를 멈추게 할 수 있다는 단점도 갖고 있다. 따라서 멀티스레드를 이용하다가 잘못된 scheduling, 동시에 공유 자원에 접근 하다보면 오류가 발생하며 Concurrency Problem을 마주하게 되는 것이다. 예시를 통해 더 살펴보자. thread 2개를 돌렸으니 1000 -> 2000 아주 바람직한 결과가 나온다. 여기도 thread 2개를 돌렸는데, 100000->200000이 아닌 이상한 숫자가 나왔다. 왜 그럴까? 앞에서 설명한 바..