변수와 함수
·
Programming Language/Kotlin
변수 선언하기 value(val) 초기값이 할당되면 바꿀 수 없는 변수 선언 variable(var) 초기값이 할당된 후에도 값을 바꿀 수 있는 변수 선언 // 변수 선언 형식 val(혹은 var) 변수명: 타입 = 값 // val과 var 변수의 차이 val data1 = 10 var data2 = 10 fun main() { data1 = 20 // 오류 data2 = 20 // 성공 } 타입 지정과 타입 추론 변수명 + 콜론(:) → 타입 명시 타입 유추(타입 추론)할 수 있을 경우 생략 가능 // 변수 타입 지정과 타입 추론 val data1: Int = 10 val data2 = 10 // == val data2: Int = 10 초기값 할당 최상위에 선언한 변수/ 클래스의 멤버 변수 선언과 동..
코틀린 언어 소개
·
Programming Language/Kotlin
코틀린의 등장 배경 코틀린 젯브레인스(JetBrains)에서 오픈소스 그룹을 만들어 개발한 프로그래밍 언어 2011년 처음 공개, 2017년 구글에서 안드로이드 공식 언어로 지정 -안드로이드 앱 개발 가능 이유 자바 가상 머신 JVM 기반 언어 ⇒ 코틀린으로 작성한 프로그램 JVM에서 실행 가능 코틀린 소스 -코틀린 컴파일러→ 자바 바이트 코드 → 자바 가상 머신 자바 확장자: .java/ 코틀린 확장자: .kt 코틀린 컴파일러(kotlinc)가 .kt 파일 컴파일 → 자바 바이트 코드 생성 코틀린 코드 작성 → 컴파일 → 자바 클래스 → JVM이 실행 표현코력과 간결함(expressive and concise) 간결한 구문으로 프로그램 작성 안전한 코드(safer code) 널 안전성(null safe..
CH7. Memory Management
·
Computer Science/컴퓨터구조 | 운영체제
#Background 메인 메모리, 레지스터_CPU가 직접 접근할 수O 유일한 저장장치 ㄴ프로그램이 실행되기 위해 -> 메모리로 적재 -메모리 하드웨어 ㄴ주소 + 데이터 읽기 요청/ 주소 + 데이터 쓰기 요청 -기본 하드웨어 레지스터 접근 -> 1 CPU clock 필요 / 메인 메모리; 사이클 ↑ 필요 + 멈춤현상(stall) 발생 / 캐시(Cache); 메인 메모리, CPU 레지스터 사이 존재 올바른 연산 보장 -> 메모리 보호 요구 *기준(Base) 및 상한(Limit) 레지스터 : 논리 주소 공간 정의 CPU_사용자 모드에서 생성 모든 메모리 주소 -> 사용자 기준, 상한 범위에 속하는 지 검사 *하드웨어 주소 보호 메모리 공간의 보호 : CPU 하드웨어가 사용자 모드에서 만들어진 모든 주소와 레..
CH6. CPU Scheduling
·
Computer Science/컴퓨터구조 | 운영체제
#Basic Concepts CPU 스케줄링: 다중 프로그램 운영체제의 기본 ㄴ다중 프로그램 목적: CPU 이용률 최대화 *CPU-I/O Burst Cycle 프로세스 실행: CPU 실행-입출력 대기의 사이클(CPU burst -> I/O burst) -CPU-burst 시간의 히스토그램 주요 관심사: CPU burst 분포 ㄴ짧은 CPU burst ↑ (입출력 중심의 프로그램이 전형적으로 가짐) *CPU 스케줄러(Short-term scheduler) : CPU가 유휴 상태 시, 준비 큐에 있는 프로세스들 중 하나의 프로세스 선택 CPU를 그 프로세스에게 할당/ 큐는 다양한 방식으로 정렬 가능O -CPU 스케줄링 결정이 발생하는 4가지 상황 1) running -> waiting 2) running -..
CH5. Process Synchronization
·
Computer Science/컴퓨터구조 | 운영체제
#배경 *프로세스는 병행 OR 병렬도 실행 데이터의 비일관성 : 언제든지 실행 중 인터럽트 당할 수 있고 부분적으로 완료될 수 있다 *문제 상황 협력적인 순차적 프로세스 OR 스레드로 구성된 시스템 비동기적으로 수행하면서 데이터 공유 ㄴ생산자-소비자 문제: 메모리 공유(=유한 버퍼) *Problem: Producer/ Consumer 문제: 동기화를 위해 (BUFFER_SIZE – 1)개 까지만 버퍼 사용 -Producer while (true) { /* produce an item in next produced */ while (((in+1) % BUFFER SIZE) == out); /* do nothing */ buffer[in] = next_produced; int = (in + 1) % BUFF..
CH4. Threads
·
Computer Science/컴퓨터구조 | 운영체제
#개요 : CPU 이용 기본 단위 여러 작업하는 응용프로그램 -> 각 작업 별 스레드 생성 + 구현 *장점 프로세스 생성은 스레드 생성에 비해 할 일 ↑ + 시간 ↑ => 스레드 사용 시 코드 간결 + 효율 ↑ ex. 워드 프로세서 (그래픽 표시 스레드/ 키보드 입력 받는 스레드/ 철자법과 문제 체크 스레드) *다중스레드 서버 아키텍처 ex. 웹 서버 클라이언트 요청을 listen하는 별도 스레드 생성 요청 -> 요청 서비스할 새로운 스레드 생성 대부분의 현대 응용프로그램은 다중스레드 사용 공유: 코드와 데이터 섹션, 자원(열린 파일 OR 신호) 각자 소유: 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택 #이점 -응답성(Responsiveness) : 프로세스의 일부가 블록 되더라도 계속 실행 가..
0123suh
빙글빙글 돌아가는 Debug 하루