반응형

전체 글 408

[운영체제] 스케줄링 알고리즘

안녕하세요 BlockDMask 입니다.오늘은, 운영체제에서 프로세스의 스케줄링에 대해 알아보겠습니다. 1) 스케줄링(Scheduling)이란.실행중인 모든 프로세스들에게 골고루 CPU를 할당하는일. 멀티 프로세스를 지원하는 운영체제의 스케줄러가 담당한다. 스케줄러는 일정한 기준(스케줄링 알고리즘)에 의거하여 스케줄링을 한다.2) 선점형 운영체제, 비선점형 운영체제 (Preemptive OS, non-preemptive OS)Preemptive OS - 현재 실행중인 프로세스A보다 높은 우선순위를 가진 프로세스B가 등장하면 스케줄러에 의해 실행 순서가 조절된다. - 우선순위가 높은놈이 오면 현재 running 상태에 있는 프로세스A가 ready상태로 밀려가고 프로세스 B가 running 상태로 CPU를 할..

[Dev C++ 설정] 괄호 자동완성 없애는법.

안녕하세요!! BlockDMask 입니다. 오늘은 Dev C++ 설정 변경에 대해서 알아보도록 하겠습니다. 저는 큰따옴표나 괄호 등을 제가 직접 치는 습관이 들어서, dev C++ 에서 괄호나 작은 따옴표 큰 따옴표 등이 자동완성되서 불편했습니다.. 매우.자동완성에 불편함을 느끼시는 분들이 편하게 setting 할 수 있도록 정리해보려고 합니다.>tools>Editor Options 를 클릭합니다. Completion>SymbolCompletion 창으로 들어갑니다.! 그다음 Enable symbol completion을 체크 해제!!!! 하고 OK를 누르면. 이제 더이상 자동완성이 되지 않습니다. 간단하군요.그럼 다시 코딩하러 가보겠습니다.

[운영체제] 프로세스란? (스케줄링, 메모리구조, 상태변화)

1. 프로세스(process)란?프로세스(process)란 실행중에 있는 프로그램(Program)을 의미한다. 스케줄링의 대상이 되는 작업(task)과 같은 의미로 쓰인다. 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고있는데, 실제로는 스레드(thread)단위로 스케줄링을 한다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다. 2. 프로세스(process)의 메모리 구조 (프로세스 하나당 하나씩 존재한다.) + 손으로 그린.... 메모리 구조.. (똥손입니다.)Code 영역 : 프로그램을 실행시키는 실행 파일 내의 명령어들이 올라갑니다. (쉽게 말하면 소스코드가 올라간다고..

[C 자료구조] Stack - Balanced Brackets

0) 제목Hackerrank 의 Linked Lists 부분의 Balanced Brackets 문제입니다.스택을 이요한 괄호 맞추기? 정도 되겠습니다.C언어를 이용하여 풀었습니다.1) 문제설명N개의 갯수만큼의 쿼리(줄) 을 입력받는다.각 줄은 "[{()}]" 등이 input으로 들어온다. 여는괄호와 닫는괄호가 딱 맞아 떨어지면 YES를 출력하고 그렇지 않으면 NO를 출력하는 문제이다.2) 풀이과정스택(stack)을 이용해서 풀었습니다.2가지 경우가 있다고 생각했습니다.첫 번째 경우는 여는 괄호가 들어오고 닫는 괄호와 맞지 않는 경우.두 번째 경우는 닫는 괄호만 들어오는 경우.두가지 상황을 예외라고 생각하고 문제를 풀었습니다.3) 함수설명StackInit : 스택 초기화.isEmpty : 스택이 비어있는지..

[UNIX] 시그널(Signal) 기본설명 및 함수

Unix에서 사용하는 Signal에 대해 알아보겠습니다. (Linux도 동일하려나.. 어짜피 조상은 같고 커널에서 제공하는 시스템 콜이니까..)1. 시그널(Signal) 이란?: Signal이란 Software interrupt로, process에 무엇인가 발생했음을 알리는 간단한 메시지를 비동기적으로 보내는 것이다.: Signal을 받은 프로세스는 Signal에 따른 미리 지정된 기본 동작(default action)을 수행할 수도 있고, 사용자가 미리 정의해 놓은 함수에 의해서 무시하거나, 특별한 처리를 할 수 있다.: 예를 들어 프로세스가 진행중에 Ctrl + c 를 누른다거나, 프로세스에 kill 명령이 내려지는것이 발생했을 때 Signal이 발생한다. 2. 시그널(Signal)의 종류: 시그널은..

[vi 명령어] vi 명령어 정리

[리눅스나 유닉스에서 사용하는 vi 편집기 명령어 총 정리 입니다.] 1. vi 편집기 명령어 전체 구조 살펴보기 2. vi 명령어 총정리 (자주 사용하는 것은 색으로 표시)3. 제가 진짜로 사용하는 vi 알짜 명령어 정리 4. vi 편집기 예시 (vi 명령 사용해서 편집 저장까지 흐름) 1. vi 편집기 명령어로 들어가기 전에 전체적인 구조 살펴보기 : linux, unix 에서 사용하는 vi 편집기는 명령모드, 입력모드, 마지막 행 모드로 총 3가지 모드로 구성되어있습니다. : 흔히 사람들이 말하는 vi 명령어는 이 세가지 모드를 자유자재로 왔다갔다 하면서 코드나 글을 작성하는 것을 말합니다. i) 명령 모드(command mode) - 처음 vi 명령어로 vi를 시작하게 되면 들어가게 됩니다. 여기..

[UNIX] 시스템 콜과 라이브러리 함수

1. 유닉스 시스템 프로그래밍 (Unix System Programming)유닉스에서 제공하는 시스템 호출(system call)을 이용해서 프로그램을 작성하는것. **시스템 호출 : 유닉스 시스템이 제공하는 서비스를 프로그램에서 이용할 수 있도록 지원하는 프로그래밍 인터페이스를 의미. 2. 시스템 호출(system call) vs 라이브러리 함수(library function)시스템 호출(system call) - 프로그래밍 인터페이스로 기본적인 형태는 C언어 함수와 같다. - 커널의 해당 모듈을 직접 호출, 작업, 결과를 리턴함. - 성공적으로 수행시 0, 실패시 -1 리턴 - 함수 이름 뒤에 (2) 로 표기 라이브러리 함수(Library function) - 미리 컴파일된 함수들을 묶어서 제공 (자..

[운영체제] OS의 정의와 컴퓨터 구조

0. 운영체제(OS)의 정의 - 운영체제, Operating System이라 한다. - 하드웨어와 응용 프로그램 사이에서 관리?중재역할? 를 해주는 시스템 소프트웨어이다. - 하는일 : 자원관리. - 세부적으로 아는것만 말하자면 : 입출력 관리, 메모리할당, 스케줄링, 장치 드라이버 관리 등. - 컴퓨터 구성에서 OS의 위치 : 하드웨어 OS 셸(bash..) / 응용 프로그램 사용자 - 종류 : Linux, Unix, Window OS, MAC OSX 1. 컴퓨터 시스템의 Main Components - CPU Cache Main Memory Hard Disk - CPU와 Cache 메모리는 Computer Architecture 부분에서 다루고 - Main Memory와 Hard Disk는 Opera..

[C 자료구조] Linked Lists -Reverse a doubly linked list

0) 제목Hackerrank 의 Linked Lists 부분의 Reverse a doubly linked list 문제입니다.C언어를 이용하여 풀었습니다.http://blockdmask.tistory.com/14 과 80퍼센트 동일.1) 문제설명더블 링크드 리스트를 역순으로 만드는 문제입니다. 이전에 푼 싱글 링크드 리스트 역순과 거의 비슷합니다.input) NULL NULLoutput) NULL NULL2) 풀이과정오리지널노드의 head->next를 가리킬 노드 포인터(curNode) 하나,역순 노드의 헤드가 될 노트 포인터(tail) 하나를 만들어서하나씩 이동하면서 역순으로 셋팅하도록 구현했습니다. 3) 코드1234567891011121314151617181920212223242526272829303..

[C 자료구조] Heap - QHEAP1

0) 제목Hackerrank 의 Heap 부분의 QHEAP1 문제입니다.C언어를 이용하여 풀었습니다.1) 문제 설명 기본적인 배열기반 최소힙 구조입니다.minheap을 구현하는 것인데1->insert2->delete3->peek입니다.insert 할때에는 변수를 받아서 삽입,delete 할때에는 맨위의 최소값을 삭제하는게 아니라, 입력한 변수를 찾아서 삭제,peek일때는 minheap의 최소값(root)를 출력하는 문제입니다.2) 풀이 과정 동적할당을 이용하여 처음 입력 받은 N 에서 N+1 만큼의 용량을 할당했습니다.N+1로 동적할당 한 이유는 arr[0]이 아닌 arr[1]부터를 힙의 루트로 사용하는게 더 편리하기 때문입니다.HeapInsert 함수는 heap 포인터와 data를 파라이터로 받아서, ..

[C 자료구조] Tree - Level Order Traversal

0) 제목Hackerrank 의 Linked Lists 부분의 Reverse a linked list 문제입니다.C언어를 이용하여 풀었습니다.1) 문제 설명 Tree의 Root Node의 Pointer가 Level Order 함수의 파라미터로 주어지고, 주어진 트리의 Level별로 data를 순서대로 출력하는 문제입니다.2) 풀이 과정 BFS(넓이 우선 탐색)라고 생각하여서 Queue를 이용해서 풀었습니다. 또한, 문제에서 주어진 Tree의 Node의 갯수가 최대 500 이어서, 동적할당을 이용한 Linked lists로 Queue를 구현하는 방식으로 풀었습니다. 3) 코드12345678910111213141516171819202122232425262728293031323334353637383940414..

[C언어 게임] 뱀 게임 (Snake Game with C)

안녕하세요. BlockDMask입니다.설명하기 전에, 플레이 영상먼저 보겠습니다.제 유튜브에 가면 초기 버전부터 점점 발전해 오는 모습의 영상을 보실수 있습니다.Play List현재 보시는 영상은 마지막 영상으로서 v3.3 최신 버전입니다.Stage4가 가장 어려운데, 도전해보실분은 아래 파일 다운로드 하셔서 즐겨보세요~!댓글 남겨주시기 바랍니다.자막을 키면 아래 설명이 나옵니다. 1. Intro이름 : mySnake Game / C언어 뱀게임요약 : C언어로 만든 뱀 게임입니다. 콘솔 환경에서만 돌아갑니다. (.exe파일)기간 : 2017년 05월 18일 ~ 2017년 05월 26일 + 5월 30일. (8일 - 주말제외)(퇴근하고 개발하고 자고, 퇴근하고 집에가서 개발하고 자고, 퇴근하고 여친만나고....

[C 자료구조] Linked Lists - Reverse a linked list

0) 제목Hackerrank 의 Linked Lists 부분의 Reverse a linked list 문제입니다.C언어를 이용하여 풀었습니다.1) 문제설명Reverse 함수의 파라미터로 들어오는 Node 구조체의 포인터 (head pointer of Linked lists)를 받아서 역순으로 연결하여 return 하는 문제입니다.input) 2 -> 4 -> 7 -> NULLoutput) 7-> 4 -> 2-> NULL2) 풀이과정오리지널노드의 head->next를 가리킬 노드 포인터(curNode) 하나,역순 노드의 헤드가 될 노트 포인터(tail) 하나를 만들어 하나씩 이동하면서 역순으로 셋팅하도록 구현했습니다.3) 코드 12345678910111213141516171819202122/* typede..

[GitHub] remote, add, commit (초기 연결과 커밋)

안녕하세요. BlockDMask 입니다.repository 를 만들고 remote를 이용하여 연결을 합니다.파일올리는 명령어와 파일 삭제하는 명령어 입니다. git remote set-url origin https://[~~~~~~~~~~~~].gitgit remote -vgit add [File Name]git commit -m "[message]"git pushgit rm [File Name]git commit -m "[message]"git push*실제로 제가 사용하는 명령어를 정리했습니다. 내용이 이상하거나 지적할 사항들은 말씀해주시면 수정하겠습니다.

[C 자료구조] Linked Lists - Inserting a Node Into a Sorted Doubly Linked List

0) 제목Hackerrank 의 Linked Lists 부분의 Inserting a Node Into a Sorted Doubly Linked List 문제입니다.C언어를 이용하여 풀었습니다.1) 문제설명Doubly Linked List 에서 데이터를 오름차순으로 넣는 문제입니다.데이터와 Linked Lists의 헤드가 파라미터로 주어집니다.주어진 파라미터를 이용해서 적절한 위치에 새 노드를 삽입하는 문제입니다.2) 풀이과정새 노드를 동적할당을 이용하여 만들고, 현재 노드가 empty리스트 인지 검사 후 새 노드가 들어갈 적절한 위치를 찾아주었습니다.찾은 위치가 맨 앞일때, 맨 뒤일때, 가운데 일때를 구분하여서 구현했습니다. 3) 코드 12345678910111213141516171819202122232..

반응형