[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기
반응형

분류 전체보기 495

[운영체제] 실시간 스케줄링

실시간 시스템 Inverted Pendulm, 막대의 기울기나 속도 정보등을 시스템으로 전달한다. 시스템이 그를 분석하여 엑추에이터를 통해 막대의 위치를 조정하여 막대가 쓰러지지 않도록 한다. 연성 실시간 시스템 : 데드라인을 만족한다는 것이 90%같은 확률로 표현된다. 중요한 실시간 프로세스가 그렇지 않은 프로세스에 비해 우선권만 가지고 있다. 경성 실시간 시스템 : 데드라인을 100% 만족한다는 엄격한 요구조건을 만족시켜야 한다. 데드라인이 지난 후에 서비스를 받는 것은 서비스를 전혀 받지 않는 것과 동일하다. 지연 시간의 최소화 이벤트 : 타이머가 만료되었을 때와 같은 소프트웨어적인 이벤트 / 원격으로 제어되던 장치가 방해물을 만났을 때와 같은 하드웨어적인 이벤트 사건지연 시간 (event late..

[운영체제] 다중처리기 스케줄링

지금까지 알아본 스케줄링은 CPU 내 처리기가 하나만 존재함을 전제로 하고 이야기했다. 하지만 요즘 컴퓨터에는 CPU가 하나여도 그 속에 코어가 여러 개 들어있다. 즉, 듀얼코어, 쿼드코어 등의 다중처리기 시스템이 보편화되어 있다. 다만 이러한 다중처리기에서 어떤 처리기는 계속 작업을 하고 어떤 처리기는 계속 쉬고 있어선 안된다. 다중처리기 시스템을 제대로 활용하려면, 서로간에 작업을 적절히 나누어 처리하도록 해야 한다. 즉, 부하공유(Load Sharing)를 제대로 수행하도록 해야 한다. 다만 이렇게 할 경우 스케줄링 문제는 더욱 복잡해질 수 있다. 어떤 프로세스는 특정 프로세서의 버스에만 부착된 입출력 장치를 사용해야 할 수도 있는데, 이러한 제한 사항을 하나하나 고려해며 스케줄링을 해야하기 때문이..

[운영체제] 비선점 스케줄링과 선점 스케줄링

비선점 vs 선점 스케줄링 비선점 스케줄링 : 프로세스가 입출력 요구 등으로 CPU를 자진 반납할 때까지 CPU에 의한 실행을 보장해주는 스케줄링이다. 작업 실행 시간 전체 또는 한번의 CPU 배당에 적용된다. FCFS(First-Come-Fist-Served) / 최단 작업 우선(SJF, Shortest Job First) / 우선순위 스케줄링 (Priority Scheduling)이 이러한 비선점 스케줄링의 알고리즘이다. 선점 스케줄링 : 시분할 시스템에서 타임슬라이스가 소진되었거나 인터럽트 혹은 시스템 호출 종료로 인한 여파로 현 프로세스보다 높은 우선순위의 프로세스가 나타나는 스케줄링이다. 현 프로세스로부터 강제로 CPU를 회수한다. 라운드 로빈 스케줄링 / 다단계 큐 스케줄링 / 다단계 피드백 ..

[운영체제] 스케줄링

스케줄러의 종류 사실 스케줄링 작업을 수행하는 스케줄러는 다양하다. 장기 스케줄러(작업 스케줄러) : 오프라인과 연계되는 일괄처리 큐를 별도로 유지하는 경우에 사용한다. 어떤 작업이 시스템에 먼저 들어와 먼저 처리 될 것인지를 결정한다. 또는 어떤 프로그램을 하드디스크로부터 메모리로 적재할 것인가를 결정한다. 단기 스케줄러(CPU 스케줄러) : 메모리 내의 준비 상태에 있는 프로세스 중에서 어떤 프로세스를 먼저 실행시킬지 결정해서 CPU를 할당하는 스케줄러이다. 중기 스케줄러 : 가상 메모리 체제에서 너무 많은 프로세스가 적재되면 하드디스크 입출력이 과대해져 시스템이 거의 멈추는 쓰레싱(Thrasing) 현상이 발생할 수 있다. 이 때 스와핑이라는 기술이 사용된다. 일부 프로세스 메모리를 디스크로 내보내..

[운영체제] 쓰레드

쓰레드의 개요 fork()를 사용하면 사용자 공간 상 text 영역은 부모프로세스와 공유하고, data,bss,heap,stack 영역은 복사되어 별도로 할당된다. 이렇게 생성된 프로세스가 전통적 프로세스이며, heavy weight process이다. 이러한 heavy weight process는 data영역이 별도로 할당되기 때문에 프로세스간의 공유변수를 갖기 어렵다. (운영체제가 제공하는 특수 구조체나 공유파일(pipe, shared mem., signal, socket 등)을 사용해야 공유가 가능해진다.) 또한 영역을 복사하는 과정이 시간적 오버헤드와 메모리 낭비를 초래할 수 있다. 반면 light weight process인 쓰레드는 text와 data 모두를 공유하고 stack만 따로 갖는 형..

[자료구조] String Matching

본 게시글은 대학생이 수업을 듣고 내용을 정리한 것입니다. 따라서 완벽하지 않은 부분이 있을 수 있습니다. 아울러 본 게시글에 포함된 코드들은 대략적인 개념 이해만을 위해 작성된 것으로 완전하지 않은 코드임을 알려드립니다. String Matching 특정 문자열에서 특정 문자열을 찾는 것 ex) abababcabcabcdabccbaabdabcabcdabcd 에서 abcabcd를 찾는 방법 응용 : 워드 / 염기서열 분석 Naive, DFA, KMP 방법 Navie 알고리즘 int naivematch(char T[], int n, char P[], int m, int output[]) { int i, j, k; for (i=1; i

안드로이드 스튜디오 묶음버튼(?) 색 바꾸기

안드로이드 스튜디오 테마가 영 맘에 안 들어서 테마를 다운로드해서 바꿨다. 그런데 코드를 정리할 때 유용하게 사용되는 코드 묶음 버튼(?)의 색 상태가 매우 좋지 못하다. 배경색과 겹쳐 거의 안보이는 수준이다. 그래서 나는 이것을 바꾸기 위해 여러가지 설정을 건드렸다. 이리저리 건드려본 끝에 결국 그 설정을 찾아내었다. 이 버튼의 색은 Setting - Editor - Color Scheme - General - Tear line 설정으로 바꿀 수 있었다. 마우스를 올렸을 때의 색 변화는 그 아래의 Tear line selection 설정으로 바꿀 수 있었다. -해결-

[운영체제] 프로세스의 생성과 종료

프로세스의 생성 생성상태란 PCB와 주소공간이 마련된 상태를 의미한다. 프로세스는 보통 fork 시스템 콜을 통해 생성된다. 이 때 생성한 주체인 프로세스를 부모프로세스, 피 생성된 프로세스를 자식프로세스라고 한다. 부모와 자식은 1:N 관계가 될 수 있다. 그에 따라 전체적으로 프로세스 구조는 tree형태를 나타낼 것이다. fork()의 수행은 부모 프로세스에서 일어나지만, fork()로부터의 리턴은 부모, 자식 모두에게 일어난다. 단, 부모 프로세스의 리턴값은 자식 프로세스의 고유번호(PID)이고 자식 프로세스의 리턴값은 0이다. 이렇게 리턴값을 다르게 설정한 이유는, fork()의 리턴값을 받아 이를 조건문에 활용해 다른 작업을 수행할 수 있도록 하기 위해서이다. 자식프로세스가 생성되면 사용자 문맥..

[자료구조] 배열의 성능 분석

배열의 성능분석 같은 배열이라도 값이 모여있을 수 있고 흩어져 있을 수 있다. 또 값들이 순서대로 정렬되어 있을 수 있고 그렇지 않을 수 있다. 이런 특성은 배열의 성능을 결정짓는데에 크게 기여한다. 이를 Packed vs UnPacked (빈 자리를 한 쪽으로 모으느냐? 흩어져 있을 수 있느냐?) Sorted vs UnSorted (아이템들이 정렬된 상태를 유지하느냐? 그렇지 않느냐?) 라고 말할 수 있는데, 이를 기반으로 배열을 총 네가지 분류로 나누고 성능을 분석해보겠다. Packed, UnSorted 가장 간단한 방법 아이템의 개수를 표시하는 변수가 따로 필요하다 Search : O(N) Insert : [Search, O(N)], O(1) (넣기만 하면됨) Delete : [Search, O(N..

반응형