Computer Science
-
[Kotlin] 코틀린 기초 - 클래스, 프로퍼티Computer Science/Kotlin 2021. 1. 17. 18:47
클래스 기존 자바의 클래스(Person) 코틀린에서의 클래스 파라미터를 대입하는 코드들을 줄여 더 간결하게 작성할 수 있음 이렇게 코드가 없이 데이터만 저장하는 클래스를 값 객체라 부름 코틀린의 기본 접근 제한자는 public이므로 생략이 가능함 프로퍼티 프로퍼티란 필드와 접근자를 한데 묶은 것임 자바에서는 필드값과 getter, setter를 따로 정의해줘야 함 코틀린에서는 이런 프로퍼티를 언어 기본 기능으로 제공하며, 자바의 필드와 접근자 메소드를 완전히 대체 가능 클래스 사용법 자바에서 Person 클래스 사용하는 방법 getter와 setter 정의 Person 객체를 만드려면 new 키워드 사용 필드를 불러오려면 getter를 사용해야 함 코틀린에서 Person 클래스 사용하는 법 자동으로 ge..
-
[Kotlin] 코틀린 기초 - 함수, 변수Computer Science/Kotlin 2021. 1. 17. 00:55
함수와 변수 함수를 선언할 때 fun 키워드를 사용함 파라미터 이름 뒤에 그 파라미터의 타입을 작성 함수를 최상위 수준에 정의할 수 있음, 꼭 클래스 안에 함수를 넣을 필요가 없음 배열도 일반적인 클래스와 똑같음. 자바처럼 배열처리를 위한 문법이 따로 존재하지 않음 System.out.println 대신에 println이라고 쓴다 세미콜론(;)을 붙이지 않아도 된다 함수 함수의 반환 타입은 파라미터 목록의 닫는 괄호 다음에 위치, :로 구분해야 한다 코틀린에서 if는 결과를 만드는 식이다. 식이 본문인 함수 함수 본문이 if식 하나로만 이루어져 있는 경우, 중괄호를 없애고, return을 제거하고 =를 식 앞에 붙이면 간결하게 함수를 표현할 수 있음. 식이 본문인 함수에서는 사용자가 반환 타입을 적지 않..
-
[Kotlin] 코틀린이란 무엇이고 왜 필요할까Computer Science/Kotlin 2021. 1. 17. 00:55
코틀린의 목적은 무엇인가 현재 자바가 사용되고 있는 모든 용도에 더 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것 자바 대신에 코틀린을 도입하면 더 적은 코드로 더 편하게 프로그래머의 목표를 달성할 수 있음 코틀린은 서버 사이드, 안드로이드 앱, 데스크탑 앱, ios 등 여러 분야에서 폭넓게 활용할 수 있음 자바와 거의 대부분 호환 가능함 정적 타입 지정 언어 자바와 마찬가지로 코틀린도 정적 타입 지정 언어(Statically typed) 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다 코틀린에서는 자바와 달리 타입 추론 기능이 있기 때문에 타입 선언을 생략해도 됨 정적 타입 지정 언어의 ..
-
입출력 시스템Computer Science/Operating System 2021. 1. 15. 13:53
질문 12.2 입출력 하드웨어 포트와 버스는 무엇인가? 포트 : 하드웨어와 컴퓨터 시스템을 연결하는 지점 버스 : 하나 이상의 장치들이 공동으로 연결되어 있는 선 컨트롤러란 무엇인가? 포트, 버스 또는 장치를 작동할 수 잇는 전자장치 집합체체 입출력 장치 컨트롤러는 어떻게 구성되어 있는가? 입력 레지스터 출력 레지스터 상태 레지스터 제어 레지스터 폴링 방식이란 무엇인가? 명령 준비 완료 비트가 설정된 것을 알아차릴 때까지, 호스트가 계속 검사 바쁜 대기 인터럽트 방식이란? CPU 하드웨어는 인터럽트 요청 라인이라고 불리는 선을 하나 갖는데, CPU는 매 명령어를 끝낸 다음 늘 이 선을 검사한다. 입출력 컨트롤러가 이 요청 라인에 신호를 보내면 CPU가 알아차리고 인터럽트 핸들러를 수행한다 트랩이란 무엇인..
-
대용량 저장장치 구조Computer Science/Operating System 2021. 1. 14. 23:20
질문 11.2 디스크 스케줄링 FCFS 스케줄링이란? 요청이 들어오는 순서대로 탐색합니다 매우 비효율적 SCAN 스케줄링이란? 디스크 암이 디스크의 한끝에서 시작하여 다른 끝으로 이동하며, 가는 길에 있는 요청을 모두 처리합니다. 다른 한쪽 끝에 도달하면 역방향으로 이동하면서 오는 길에 잇는 요청을 모두 처리합니다 C-SCAN 스케줄링이란? 헤드가 한쪽 끝에 도달했을 때 헤드 근처에 있는 요청들은 다 처리하면서 왔기 때문에 반대쪽에 가장 많은 요청이 몰려있을 것입니다 그렇기 때문에 헤드가 한쪽 끝에 도달했을 때 반대 방향으로 이동하는 것이 아닌 반대쪽 끝에서부터 다시 탐색합니다 11.5 저장장치 관리 드라이브를 사용하여 파일을 보유하려면 어떻게 하나요? 장치를 하나 이상의 블록 또는 페이지 그룹으로 파티..
-
가상 메모리Computer Science/Operating System 2021. 1. 14. 17:44
가상 메모리 질문 10.1 배경 가상 메모리란 무엇인가요? 가상 메모리란 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법입 프로그램을 일부분만 메모리에 올려놓고 사용할 수 있다면 어떤 이점이 있나요? 프로그램은 물리 메모리 크기에 의해 더는 제약을 받지 않습니다. 각 프로그램이 더 작은 메모리를 차지하므로 더 많은 프로그램을 동시에 수행할 수 있습니다 프로그램을 메모리에 올리고 스왑하는 데 필요한 i/o횟수가 줄어들기 때문에 프로그램들이 빨리 실행됩니다 10.2 요구 페이징 요구 페이징이란? 보조저장장치에서 메모리로 프로그램을 적재할 때 필요한 페이지만 적재하는 기법 페이지가 메모리에 있는지 보조 저장 장치에 있는지 구분하는 방법은? 페이지 테이블에 유효-무효 비트를 만들어서 ..
-
메모리 관리Computer Science/Operating System 2021. 1. 14. 01:26
질문 9.1 배경 심볼릭 주소를 실제 물리 주소로 바인딩 하는 작업은 어느 시점에 일어나나요? 컴파일 시간 적재 시간 실행 시간 논리 주소와 물리 주소, 가상 주소는 무엇인가요? 논리 주소 : CPU가 생성하는 주소 물리 주소 : 메모리가 취급하게 되는 주소 가상 주소 : 논리 주소와 물리 주소가 다를 때 논리 주소 MMU(Memory Management Unit)이 하는 역할은 무엇인가요? 가상 주소를 물리 주소로 변환시켜 줍니다 재배치 레지스터란 무엇인가요? 가상 주소를 물리 주소로 변환시킬 때 기준이 되는 레지스터입니다 일반적으로 논리 주소 + 재배치 레지스터의 값이 물리 주소가 됩니다 9.2 연속 메모리 할당 운영체제와 다른 사용자 프로그램을 현재 수행중인 사용자 프로그램의 접근으로부터 보호하는 ..
-
교착 상태Computer Science/Operating System 2021. 1. 14. 00:56
질문 8.3 교착 상태 특성 교착 상태가 일어나는 필요조건들에는 어떤 것이 있나요? 상호 배제 : 최소한 하나의 자원이 비공유 모드로 점유되어야 합니다. 다른 스레드가 그 자원을 요청하면, 요청 스레드는 자원이 방출될 때까지 반드시 지연되어야 합니다. 점유하며 대기 : 스레드는 최소한 하나의 자원을 점유한 채, 현재 다른 스레드에 의해 점유된 자원을 추가로 얻기 위해 반드시 대기해야 합니다. 비선점 : 자원들은 강제적으로 방출될 수 없고, 점유하고 있는 스레드가 태스크를 종료한 후 그 스레드에 의해 자발적으로만 방출될 수 있습니다. 순환 대기 : 대기하고 있는 스레드들이 서로 연쇄적으로 서로의 자원을 대기합니다. 8.4 교착 상태 처리 방법 교착 상태를 처리하는 방법은 어떤 것이 있나요? 문제를 무시합니..