컴퓨터 공학 (76) 썸네일형 리스트형 5. 프로세스 동기화 Process Synchronization 이번 글에서는 프로세스 동기화에 대해 알아보겠습니다. 프로세스 동기화 프로세스 동기화의 필요성 오늘 날 대부분 컴퓨터 시스템은 하나의 하드웨어 안에 여러 개의 프로세스가 존재할 수 있는 멀티테스킹 시스템/멀티프로세스 시스템입니다. 하나의 하드웨어 안에서 동작하는 여러 프로세스들은 각각 독립적으로 동작하기 때문에 기본적으로는 프로세스 간 동기화가 전혀 이루어져 있지 않습니다. 이는 프로세스들이 공유 자원에 접근하려 할 때, 공유 자원의 integrity를 손상시킬 수 있기 때문에 문제가 발생합니다. 따라서 공유 자원에 대한 동기적 접근시 데이터 무결성을 해치지 않기 위해 운영체제는 프로세스 동기화 (process synchronization) 매커니즘을 가지고 있.. 4 (2). 프로세스 스케줄링 : 스케줄링 기법 프로세스 스케줄링 기법 지난 글에서는 프로세스 스케줄링의 개념, 대표적인 성능 지표, 스케줄링 기준, 스케줄링 레벨에 대해 설명하였습니다. 지난 글에 이어 이번 글에서는 프로세스 스케줄링 기법에 대해 알아보겠습니다. 프로세스 스케줄링 기법 프로세스 스케줄링 기법의 필요성 프로세스들은 컴퓨터 하드웨어 자원을 이용하여 작업을 처리합니다. 컴퓨터 시스템에 하나의 프로세스만 존재한다면 하드웨어 자원은 계속 사용가능한 상태일테니 CPU를 사용하기 위해 대기하거나 입출력 장치에서 입출력 요청을 하고, 응답을 받은 뒤 다시 CPU를 사용할 때에도 기다릴 필요가 없을 것입니다. 하지만 컴퓨터 시스템에 하나의 프로세스만 있는 경우는 거의 없고, 대부분은 프로세스의 개수가 CPU 개수보다 많기 때문에 프로세스간 CPU 사.. BFS (Breath First Search) 너비우선탐색, DFS (Depth First Search) 깊이우선탐색 이번 글에서는 코딩테스트 출제 빈도가 아주 높은 알고리즘은 BFS 너비우선탐색과 DFS 깊이우선탐색 에 대해 소개하겠습니다. 이번 정리 역시 프로그래머스에서 코딩테스트 연습을 하다가 BFS/DFS 영역의 문제를 풀기전 개념을 다시 한 번 정확히 정리해보고자 정리한 글입니다. BFS와 DFS는 그래프 자료구조를 탐색할 때 사용되는 기법입니다. 두 기법 모두 그래프에 속한 모든 노드를 방문하는 것을 목적으로 하는데, 탐색 우선 순위를 어떤 것으로 두는 지에 따라 두 기법의 차이가 있습니다. 너비 우선 탐색 BFS (Breath First Search) BFS의 개념 BFS는 이름에서 알 수 있듯이, 너비 Breath를 우선으로 탐색하는 기법입니다. 그래프 탐색의 시작점 (루트 또는 특정 노드) 과 같은 거리.. 4. 프로세스 스케줄링 Process Scheduling 이번 글에서는 프로세스 스케줄링에 대해 간단히 알아보겠습니다. 스케줄링은 멀티프로그래밍/멀티태스킹시스템에서 하는 것 멀티프로그래밍/멀티태스킹시스템 = 시스템안에 여러 개의 프로세스가 존재하여 메모리 cpu를 번갈아가며 사용하는 것. Cpu utilization을 높이는 것이 중요한 issue CPU/processor = time sharing (시분할 지원) Memory = space sharing (공간할 지원) = 프로세스 간 공간을 나눠서 메모리를 사용 Performance Measures Response Time : 요청을 보낸 뒤 그 요청에 대한 첫번째 response(응답)이 올때 까지의 시간을 의미합니다. 사용자가 컴퓨터의 어떤 아이콘을 눌러 작업 처리를 요.. 3. 운영체제 공부를 위한 사전 지식 Backgrounds for OS 이번 글에서는 운영체제 공부를 위한 사전 지식에 대해 간단히 알아보겠습니다. 알아두면 운영체제 공부에 도움이 되는 개념들로 간단하게만 짚고 넘어간 후 정확한 이해가 필요한 개념은 추후 다시 다루도록 하겠습니다. 가벼운 마음으로 읽어주세요 :) Dual Mode Operation CPU는 두가지 모드에서 동작합니다. user mode : CPU가 사용자 어플리케이션을 실행하고 있을 때 kernel mode : 커널 안에 있는 프로그램을 실행하고 있을 떄 ( 이때 실행되는 기능들은 아주 중요하기 때문에 사용자 프로그램에서 접근 할 수 없음) Privileged Instruction 는 machine, instruction, set으로 구성된 컴퓨터 시스템 중 일부 명령을 가.. 완전 탐색 Exhaustive Search 이번 글에서는 완전 탐색에 대한 내용을 다루겠습니다. 프로그래머스에서 코딩 테스트 연습에 완전 탐색 카테고리가 있는데 문제를 풀기 전에 개념을 확실히 짚고 넘어가는게 좋을 것 같아 정리했습니다. 재귀함수 Recursion Function 완전 탐색 알고리즘에서는 재귀 함수가 주로 사용되기 때문에 먼저 알아보았습니다. 재귀란, 컴퓨터 과학에서 자기 자신을 재참조하는 방법을 의미합니다. 재귀 함수는 함수 내에서 자기 자신을 다시 호출하는 함수를 말합니다. 즉, 자신이 수행할 작업이 일정한 패턴을 가지고 반복된다면, 패턴의 한 조각을 수행하는 함수를 만들고, 그 함수가 다시 자기 자신을 호출해서 해당 함수를 반복 실행할 수 있도록 하는 것입니다. base case 그렇다면 이렇게 무한히 자기 자신을 호출하는 .. 정렬 알고리즘 (3) : 합병 정렬, 퀵 정렬 지난 시간에 이어 이번 글에서도 정렬 알고리즘에 대해 이어 설명하겠습니다. 이번 글에서는 합병 정렬과 퀵 정렬에 대해 소개하겠습니다. 합병 정렬 Merge Sort 합병 정렬의 개념 합병 정렬은 분할 정복 (Divide and Conquer) 방식으로 큰 문제를 반으로 쪼개가며 작은 문제로 만든 후, 작은 문제를 해결한 결과를 합쳐 전체를 정렬하는 방식의 알고리즘 입니다. 여기서 등장하는 분할 정복이라는 개념을 아주 중요한 개념이기 때문에 다음 번에 하나의 큰 주제로 자세히 설명하도록 하겠습니다. 합병 정렬의 기본 로직 합병 정렬은 크게 분할과 합병 과정으로 이루어집니다. 분할 Divide 현재 배열의 ( 시작 인덱스 + 종료 인덱스 ) / 2 한 값을 기준으로 현재 배열을 받으로 쪼갠다. 쪼갠 배열의 .. 정렬 알고리즘 (2) : 삽입 정렬, 버블 정렬 지난 시간에 이어 이번 글에서도 정렬 알고리즘에 대해 이어 설명하겠습니다. 이번 글에서는 삽입 정렬과 버블 정렬에 대해 소개하겠습니다. 삽입 정렬 Insertion Sort 삽입 정렬의 개념 삽입 정렬은 현재 인덱스와 해당 인덱스보다 작은(왼쪽) 인덱스에 있는 원소들을 비교하여 자신이 들어갈 위치를 찾아 삽입하는 정렬 알고리즘 입니다. 삽입 정렬의 기본 로직 0번째 인덱스는 가장 왼쪽에 위치해 있기 때문에 비교 대상이 없으므로 삽입 정렬은 1번재 인덱스부터 시작합니다. 삽입할 대상이 되는 현재 인덱스는 별도의 변수에 저장해 두고, 현재 인덱스에서 -1 한 인덱스의 원소들을 비교합니다. 현재 인덱스의 원소 값이 비교 인덱스의 원소 값보다 큰 원소를 만날때까지 비교 인덱스를 -1 씩 해주며 왼쪽으로 이동합니.. 이전 1 ··· 6 7 8 9 10 다음