목록분류 전체보기 (60)
코학다식
Operating System chapter 1-2 (3) System Calls 시스템 콜(System Call)이란 운영체제에 의해 제공되는 서비스의 프로그래밍 인터페이스(Programming Interface)이다. 주로 함수의 모임인 라이브러리 형태로 제공되어 사용자가 호출해서 사용하도록 되어 있다. 일반적으로 high-level 언어로 작성된다. (C or C++) 대부분 직접적인 시스템 콜 사용보다는 high-level의 Application Program Interface(API)을 통한 프로그램에 의해서 접근된다. 가장 자주 쓰이는 API에는 윈도우의 Win32(64) API, 리눅스 계열의 POSIX, Java Virtual Machine의 Java API가 있다. System Call ..
Java 시작하기 (3) 자바 프로그래밍 기초(2) 변수들 자바의 기본 문법은 C/C++과 매우 유사하다. 변수 정의 package FirstProgram; import java.util.Random; public class VariableDefinition { public static void main(String[] args){ int one; int two = 2; // with initialization int three = 3, four; // multiple definitions in one line Random generator = new Random(); // definition + class instantiation } } 변수 이름 문자로 시작해야 한다. 문자, 숫자, 그리고 $를 포함..
Operating System chapter 1-2 (2) 스토리지 계층 스토리지 시스템은 계층적으로 정리되어 있다. (속도, 비용, 휘발성 등으로 구분될 수 있음) Caching 메인 메모리에 접근하는 데에는 시간이 소요되기 때문에, 최근 접근한 데이터를 가지고 있는 빠른 속도의 메모리를 CPU와 메인 메모리 사이에 둔다. 이것이 캐시(Cache)이다. 주로 S램을 사용한다. 스토리지 계층에 의해 같은 데이터가 여러 곳에 존재하는 등의 Consistency 문제가 발생할 수 있다. 특히 여러 사용자가 사용할 경우 이는 더 문제가 될 수 있다. 이러한 문제를 예방하기 위해 Cache management policy를 필요로 한다. 디스크에서 레지스터로의 이동 멀티태스킹(Multitasking) 환경은 가..
문제 링크 Solution 나무를 자를 특정 높이를 구해야 한다. 즉, 특정 숫자를 구해야 하는 것이다. 이 숫자는 어떤 조건을 만족해야 한다. 조건이 무엇인지는 차치하고, 이 두 가지만 먼저 고려해 보자. 전형적인 탐색 알고리즘 문제와 비슷하다. 그래서 이분 탐색을 사용했다. 다만 이미 입력받거나 해서 정해진 특정 숫자를 찾는게 아니라, 나무들의 배열에서 이 숫자보다 큰 높이를 가진 나무들을 잘랐을 때 잘린 부분의 합이 M이 넘는다는 조건을 만족하는 숫자를 찾아야 하는 게 다른 점이다. 또 하나 주의해야 할 점은 그렇게 해서 조건을 만족하는 최댓값을 찾아야 한다는 것이다. 코드에서 ans가 등장한 이유이다. 가령, 입력으로 나무 개수가 2개, 필요한 나무의 길이가 3, 각각의 나무의 길이가 2인 경우에..
Java 시작하기 (2) 자바 프로그래밍 기초 (1) 자바 프로그래밍 기초: "Hello, World!" package FirstProgram; public class HelloWorld { public static void main(String[] args){ System.out.println("Hello, World!"); } } 자바에서 모든 것은 객체(object)이다. 객체는 클래스(class)의 인스턴스(instance)이다. 위 예제 프로그램은 HelloWorld라는 하나의 클래스를 가진다. 클래스는 메서드(methods)를 가질 수 있다. HelloWorld 클래스는 main이라는 하나의 메서드를 가진다. main 메서드는 프로그램의 entry point(starting point)이다. ..
Operating System chapter 1-2 (1) 운영체제란 무엇일까? 운영체제란 컴퓨터의 사용자와 컴퓨터 하드웨어 사이의 중개인 역할을 하는 프로그램을 말한다. 운영체제의 정의(1) 사용자 관점 운영체제는 쉬운 사용과 수행을 위한 프로그램이다. 시스템 관점 운영체제는 자원 할당과 제어를 위한 프로그램이다. 모든 자원을 관리한다. 효율적이고 공정한 자원 사용을 위해 충돌하는 요구들 사이에서 결정을 내린다. 에러와 부적절한 컴퓨터의 사용을 예방하기 위해 프로그램의 실행을 제어한다. 운영체제의 정의(2) 보편적으로 받아들여지는 정의는 없고, "운영체제를 구매할 때 판매자가 제공하는 모든 것"이라고 생각하는 게 좋은 추정이다. (하지만 판매자마다 차이가 존재한다.) 모바일 운영체제는 핵심 커널(작은 ..
Java 시작하기(1) 1. 자바(Java)란 무엇일까? general-purpose 프로그래밍 언어이다. 2019년 현재 가장 인기 있는 프로그래밍 언어이다. 1-1. 그렇다면, 프로그래밍 언어란 무엇일까? 컴퓨터에서 명령을 수행하기 위해 쓰이는 언어이다. 왜 필요할까? CPU는 기계어의 집합을 이해한다. 기계어는 인간이 이해하고, 사용하기에 너무 어렵다! 그래서 프로그래머들은 기계어로 compile 혹은 interpret되고 실행되는 프로그래밍 언어를 사용해서 응용 프로그램을 만든다. 1-2. 프로그래밍 언어에는 두 가지 종류가 있다. Compiled language 컴파일러(compiler)가 전체 프로그램을 읽고 object code(= machine code or binary code)로 변환한..
진짜 입문자를 위한 클라우드와 AWS 이 글은 인프런의 진짜 입문자를 위한 클라우드와 AWS 강의를 들으며 개인적으로 작성한 강의 노트입니다. 생략된 내용이 조금 있습니다. 클라우드란 무엇인가 클라우드 컴퓨팅 또는 클라우드 서비스를 줄인 말 클라우드 컴퓨팅(Cloud computing)은 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. 컴퓨터 리소스(자원, 하드웨어)를 직접 구매하지 않고 인터넷을 통해서 서비스로 제공받는 것 개인 사용자를 위한 클라우드 내가 내 돈으로 직접 컴퓨터를 사지 않고, 서비스로 제공받는 것 기업을 위한 클라우드 기업이 물리적인 컴퓨터(=서버클라이언트)를 사지 않고, 서비스로 제공받는 것 클라우드의 장점 (AWS..