본문 바로가기

전체 글

(56)
[운영체제] 시스템 콜 (System Call) 본 포스팅의 내용은 Operating System Concepts 10th, Operating Systems Three Easy Pieces를 참조하여 작성되었습니다. 오늘은 운영체제를 배우다 보면 많이 접하게 되는 시스템 콜에 대해 알아보겠습니다. 시스템 콜 이란? 위키피디아의 정의에 따른 시스템 콜의 정의는 다음과 같다. 시스템 호출(system call)은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법이다. 시스템 콜은 왜 필요할까? 우리가 일반적으로 사용하는 프로그램은 '응용프로그램..
강원국 교수님의 "쉬운 글쓰기 특강" 며칠 전 "대통령의 글쓰기"의 저자 강원국 교수님이 우리 학교에 와서 강연을 해주셨다. 강연 주제는 "항공대생을 위한 쉬운 글쓰기 특강"이었고 아래는 강원국 교수님이 말씀해주신 15가지 방법을 정리한 것이다. 쓰는 데에 시간을 최소화하고, 고치는 데에 시간을 최대한 많이 할애하라.(머릿속에 있는 오답노트의 수준이 나의 글쓰기의 수준을 결정한다. 많은 좋은 소재와 구성을 가진 글을 읽었을 때 오답노트가 만들어진다 ) 일단 머릿속에 있는 말을 쏟아내라. 글과 말은 관련이 있다.(글을 잘 쓰면 말을 잘할 수 있다. 그리고 말을 많이 하면 성공경험이 만들어지고 이 중에 살아남은 것들이 글이 된다. 말을 하면 또한 새로운 생각이 생성된다. 어떤 말을 8시간 동안 연속으로 말할 수 있다면 그것이 책이 된다. 말의 ..
플라톤의 국가론(The Republic)을 읽고. 학문적으로는 어떤 공부를 해야 할지에 대한 궁금증과, 개인적으로 매번 프로젝트를 진행하면서 어떻게 팀을 꾸리고 최선의 결과를 도출해내야 할지에 대한 궁금증이 있었다. 국가론은 내게 이러한 문제가 어떤 것이 원인인지 그리고 나아가서 문제에 대한 해결해 나갈 실마리를 제시해 주었다. [첫 번째: 어떤 것을 공부해야 하는가] 소프트웨어학은 컴퓨터 공학의 연구 주제인 하드웨어와, 눈에 보이지 않는 소프트웨어 중 후자를 조금 더 집중적으로 탐구하기 위해 분리된 학문이다. 그리고 컴퓨터공학은 1944년에 전자기학과 수학의 논리학이 합쳐져 만들어진 인간의 발명품인 “전자계산기”에 시초를 두고 있고 시간이 흐르면서 수학, 기계공학, 언어학 등의 다양한 학문과 함께 발전하며 지금의 거대한 형태에 이르렀다. 따라서 소프트..
[MATLAB] 메틀랩으로 2차 방정식 푸는방법 메틀랩을 이용하면 빠르게 이차방정식의 해를 구할 수 있다. 주요함수 및 키워드 syms: 메틀랩의 symbolic 변수를 선언할 때 사용한다. solve(조건, 방정식의 변수): 조건을 만족시키는 일반해를 구한다. subs(일반해, 계수, 상수): 특수해를 구한다. simplify(solution): 기약 분수로 만든다. vpa(Variable Precision Arithmetic): 분수를 실수로 표현한다. 2차 방정식 해법 심볼릭 변수를 만든다. (a,b,c,x) 방정식을 세운다. (이차식) 조건과 구하고자 하는 변수를 명시하여 일반해를 구한다.(아래의 경우 근의 공식) 특수해를 구한다.(a, b, c 가 각각 3, 2, -6일 때) Real Number로 바꾸어 출력한다. (vpa 함수 이용) sy..
[파이썬] 제너레이터(generator) 본 포스팅의 내용은 "처음시작하는 파이썬" 의 내용을 많이 참조하여 작성되었음을 알려드립니다. 제너레이터(generator)란? 제너레이터의 정의는 다음과 같다. "파이썬에서 시퀀스를 생성하는 객체이다." 무슨말인지 모르겠다면 우리가 반복문을 순회할 때 매번 사용했던 range함수를 떠올려 보면 된다. 이 함수가 바로 지금 배울 제너레이터를 반환하는 함수이다. 제너레이터는 일반적인 함수와 달리, 리턴을 한 후에 자신이 마지막으로 리턴된 위치와 변수 값들을 기억하고 있다. 정확히는 return이라는 키워드를 사용하지 않고 yield라는 키워드를 사용한다. Range 함수를 우리가 직접 만들어보자. def my_range(begin=1, end=100, step=1): number = begin while ..
[C++] Doubly Linked List(더블 링크드리스트) 본 포스팅은 [Data Structure & Algorithm in C++ -Goodrich]의 내용을 많이 참조하여 작성되었습니다. C++로 List의 ADT(Abstract Data Type)을 구현하는 방법은 여러가지 이다. 더블 링크드 리스트 // Doubly_linked_list.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include using namespace std; typedef int Elem; class NodeList { private: struct Node { Elem elem; Node* prev; Node* next; }; public: class Iterat..
[Python3] 셋(집합) 자료형 기초 파이썬에서는 셋(Set)자료형을 기본 자료형을 제공한다. 사용방법은 아래와 같다. Set 자료형 선언방법 #Set 자료형은 중복을 허락하지 않고, 순서가 없다는 성질을 가진다. 따라서 튜플이나 리스트에서처럼 인덱싱이 불가능 하다. s1 = set(["a","b","c"]) print(s1) #{'a', 'c', 'b'} s2 = set("cde") print(s2) #{'c', 'd', 'e'} 집합 연산(교집합, 합집합, 차집합) #교집합 print(s1&s2) # {'c'} print(s1.intersection(s2)) #합집합 print(s1|s2) #{'c', 'e', 'b', 'd', 'a'} print(s1.union(s2)) #{'c', 'e', 'b', 'd', 'a'} #차집합 prin..
[Python3] 딕셔너리 파이썬에서는 딕셔너리와 셋이 기본 자료형으로 들어가 있고, 사용법은 아래와 같습니다.! 딕셔너리 생성하기 #빈 딕셔너리 생성 d = {} type(d) # 딕셔너리에 원소 추가 또는 삭제 #--------------- 저장-------------------- #"name"이라는 Key로 "Kim Y"라는 Value로 저장 d["name"] = "Kim Y" #"id"이라는 Key로 "fjvbn2003"라는 Value로 저장 d["id"] = "fjvbn2003" print(d) #{'name': 'Y', 'ID': 'fjvbn2003'} #--------------- 삭제--------------------- # "name"이라는 key값을 가진 데이터 삭제 del d["name"] print(d) # ..