분류 전체보기 (48) 썸네일형 리스트형 프로세스 관리 프로세스는 프로그램이 실행됨에 따라서 생성된다는 것으로 알고있다. 그렇다면 프로세스는 어떻게 생성되며 어떻게 종료되는 것 일까? 프로세스는 다음과 같은 부모 자식 관계로 OS 에게 관리된다. 프로세스는 위와 같이 트리 구조로 관리되어 지고 기본적으로 새로 생성 되려면 기존 프로세스의 시스템 콜에 의해 생되어야 하며 생성 시스템 콜 함수를 fork(); 라고 한다. 이후 새로 생성된 자식 프로세스는 새롭게 공간을 할당 받고 exec() 시스템 콜로 매개 변수에 따라 자신이 실행할 다른 프로그램의 코드를 실행하며 이는 곧 새로운 프로그램의 프로세스가 된다. 그렇게 자식 프로세스는 자신의 작업이 끝나면 일반적으로는 exit(); 시스템 콜을 호출하여 자발적으로 할당 받은 자원을 반납하고 종료되는데 이를 '죽는.. 프로세스(Process), 스레드(Thread) 우리는 흔히 프로그램을 실행하면 프로그램의 프로세스가 생성되고 CPU 가 이를 실행한다고 알고 있다. 그렇다면 프로세스는 정확히 무엇이고 프로세스와 함께 거론되는 스레드는 무엇일까? 간단하게 프로세스는 실행되는 프로그램의 수행 단위이고 스레드는 CPU 에서 실행되는 프로세스의 실행 단위이다. 먼저 사용자가 프로그램을 실행하면 프로세스가 생성되어 각종 자원을 할당 받은 후 CPU 에게 실행되기를 기다리는데 이때 수행되기 위한 프로세스의 정보의 집합은 문맥(Context)라고 한다. 문맥에는 프로세스가 실행되기 위한 CPU 정보, 메모리 정보, OS 자원 정보 이며 이는 각각 다음과 같다. 즉, CPU 는 프로세스의 문맥을 알아야 실행할 수 있으며 실행 중이던 프로세스를 해제하고 다른 프로세스를 실행할 때 .. 커널(Kernel), 시스템 콜(System Call) 이번 시간에는 OS 영역과 사용자 영역의 프로그램 실행 간 요소들을 알아보려 한다. 1. Application(응용 프로그램) 사용자가 실행하는 프로그램, 흔히 우리가 바탕화면에서 클릭해 실행하는 모든 프로그램이라고 생각하면 된다. 반대로 사용자가 컴퓨터를 좀 더 쉽게 사용할 수 있게 사용자가 아닌 운영체제가 실행시킨 프로그램들은 시스템 프로그램이라고 한다. 응용 프로그램은 System Call 로 OS 에게 시스템 기능 사용을 요청한다. 2. GUI(Graphical User Interface) 컴퓨터의 기능을 사용자가 보기 쉽게 그래픽으로 나타낸 인터페이스. 우리가 흔히 아는 윈도우 바탕화면을 생각하면 된다. 반대로 사용자가 명령어를 직접 입력해 컴퓨터 기능을 실행하는 인터페이스를 CLI(Comman.. 운영체제 개요 운영체제는 HW 를 사용할 수 있게 해주는 SW 다. 우리 그러니까 사용자는 HW 를 직접 제어할 수 없다. 우리가 프로그램을 실행 시킬 때를 생각해보자. 직접 디스크에서 실행 시키려는 프로그램의 데이터를 찾아 CPU 와 메모리에 넘겨주지 않는다. 우리는 그저 모니터에 출력되는 OS 의 GUI 인 Window Explorer 를 사용해 아이콘을 클릭할 뿐이고 사용자의 요청을 처리해 디스크로 부터 해당 프로그램의 데이터를 가져와 메모리에 올리고 CPU 가 실행하게 해주는 즉 HW 의 자원을 관리해주고 사용자가 원하는 동작을 수행해주는 것은 OS 이다. 그럼 OS 와 컴퓨터는 어떠한 구조로 구성되어 있으며 어떤 원리로 사용자의 요청을 수행해주는 것일까? 개인적으로 OS 는 위와 같은 구조로 표현할 수 있다고.. 전화번호 목록 https://school.programmers.co.kr/learn/courses/30/lessons/42577# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level 2 대표적인 Hash 를 사용해서 푸는 문제, 전화번호의 접두가 다른 전화번호를 포함하는지 찾아야한다. 필자는 전화번호 목록을 반복문으로 탐색하기 이전에 전화번호 목록을 정렬했다. 자바 내장 문자열 배열 정렬 기준은 사전식 기준이기에 나는 사전식 이전에 문자열이 더 짧을 경우를 추가헀다. 즉, 새로운 기준으로 배열을 짧은 전화번호 우선 정렬 후 같은 길이의 문자열에 한해서는 사전식으로.. n진수 게임 https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level 2 Java Interger 클래스의 진수 변환 함수를 사용하면 쉽게 풀 수 있는 문제. 다만 문제에서 주어지는 총 숫자가 구해야하는 전체 숫자가 아니라 진수가 말하는 숫자의 갯수였다. 어쩐지 출력값 길이가 이상하게 길더라; 내가 구현한 방식은 다음과 같다. 1. 진수가 말하는 갯수를 넘어가는 문자열의 길이를 구한다. 최초 말하는 순서인 자신의 순서에 이후 총 인원 수 한 사이클을 돌아.. 알고리즘 개요 알고리즘은 문제를 해결하기 위한 방법이다. 대표적으로 피타고라스의 정리는 빗변의 길이를 구하기 위한 알고리즘이라고 볼 수 있으며 컴퓨터 공학에서 알고리즘은 대부분 기존에 일반적인 방식으로 진행 시 소모되던 시간을 더 줄일 수 있는 새로운 방법이라고 생각한다. 그렇기 때문에 알고리즘은 도출할 수 있는 모든 결과 중에서도 거의 최악에 가까운 경우의 수를 판단하는 지표로 보고 해당 경우의 수 이내에 작업이 수행된다고 판단한다. 그래서 대부분의 알고리즘 Big-O 표기법이라고 하는 점근적 표기법으로 입력에 따른 수행시간을 나타낼 수 있으며 이를 시간 복잡도라고도 한다. 시간 복잡도의 표기는 다음과 같다. 실제로 수학적 식으로 표현하면 약간 다르지만 기본적으로 필자가 적은 방법대로 시간 복잡도를 구하면 쉽게 시간.. 자료구조 - 트리 그래프에서 확장된 개념으로 순회가 없는 그래프를 트리라고 할 수 있다. 트리의 구성은 위와 같이 표현이 가능하며 그래프와 동일하게 노드와 간선으로 이루어져있다. 최상단 노드는 루트 노드라고 부르며 최하단의 노드들은 리프 노드라고 부른다. 노드 간 부모, 자식, 형제 관계가 존재하며 부모의 자식 노드들의 갯수를 차수라고 한다. 루트에서 리프 노드까지 간선의 갯수를 높이, 가장 많은 자식 노드의 레벨을 너비라고 한다. 트리는 그래프에 비해 종류가 상당히 다양하며 필자가 본 경험이 있는 트리 자료구조들은 다음과 같다. 이진트리 힙 트리 AVL 트리 Red Black 트리 B 트리 Trie 오늘은 트리 자료구조의 기초인 이진 트리가 무엇인지 그리고 트리 순회 방법에 대해 알아보려한다. 이진 트리는 위와 같이 2.. 이전 1 2 3 4 5 6 다음