전체 글 58

[Java8] Functional Interface 알아보기 (+ 기본형 특화 인터페이스)

함수형 인터페이스(Functional Interface) API 공식문서에 따르면 아래와 같이 정의할 수 있습니다. 오직 하나의 추상 메소드만 가져야 한다. ㄴ 추상메소드 2개인 경우, Functional Interface X -> 컴파일 에러 발생 ㄴ 추상메소드 1 + 디폴트 메소드 1 인 경우에는, Functional Interface O -> 디폴트 메소드는 직접 구현을 하기 때문에 추상 메소드에 포함되지 않음 `@FunctinalInterface` 애노테이션 사용하여 함수형 인터페이스 조건에 맞는지 검사함 ㄴ애노테이션을 따로 붙이지 않아도 컴파일러가 알아서 식별함 ㄴ 가독성을 위해서 애노테이션을 붙이는 것을 권장함 예제 size라는 추상 메소드 하나와 출력을 위한 디폴트 메소드 하나를 가진 함수형..

Java 2024.04.21

[CS] 운영체제의 핵심인 커널과 시스템 콜

운영체제의 핵심, 커널 Application과 컴퓨터 부품간 연결 Apllication 실행에 필요한 여러가지 핵심 서비스 제공 (리소스 접근, 관리, 보안 등) 커널 서비스 `프로세스 관리` - 실행중인 프로그램 = 프로세스 라 하는데요. 작업 관리자를 통해 실행중인 프로그램을 확인할 수 있습니다. - 다양한 프로세스를 관리합니다. (IO 주로 사용하는 프로세스, CPU만 사용하는 프로세스, 당장 실행가능한 프로세스, 당장 실행 불가능 프로세스 등) `리소스 접근 및 할당` - 프로세스에 필요한 리소스 할당 CPU : CPU 스케쥴링에 따라 관리 메모리 : 동적 메모리할당, 가상메모리 할당 등 (자세한 내용은 향후 정리 예정) 입출력장치 : 인터럽트 서비스 루틴 제공 (하드웨어 인터럽트 요청시) `파일..

CS 2024.04.20

[CS] 운영체제 개념과 학습 이유

대표적인 운영체제 PC : 윈도우, macOS, 리눅스 스마트폰 : 안드로이드, iOS 개념 실행할 프로그램에 필요한 리소스를 할당하고, 응용프로그램(Application)이 올바르게 실행될 수 있도록 돕는다 메모리의 `커널(kernel) ` 공간 사용 역할 `리소스 할당 및 관리` - Application과 하드웨어 장치 간의 필요한 리소스 할당 및 관리 - 예) 두개의 프로그램이 동시에 프린터 출력 요청 시 : A에서 먼저 프린터 사용하게 하고 B는 대기. A종료후 B출력 `메모리 공간 관리` - 실행될 Application을 메모리의 사용자 영역에 로딩하고, 더이상 실행되지 않는 Application은 삭제함 운영체제 왜 필요한가? 일반적으로 운영체제 관리하, 개발자는 효율적으로 개발할 수 있는데요..

CS 2024.04.20

[CS] 캐시 메모리 특징 및 동작원리

캐시메모리 등장 배경 1. CPU의 연산속도가 CPU가 메모리에 접근하는 속도보다 빠른 문제 2. 용량과 비용 문제 - CPU에 가까울수록 메모리 접근 속도는 빠르지만, 용량은 적고, 가격은 비싸짐 이러한 두가지 문제점을 해결하기 위해 등장한게 `캐시메모리`입니다. 캐시 메모리 CPU와 메모리 사이에 위치하면서 메모리의 데이터를 미리 복사하여 임시저장 메모리에 접근하는 속도가 빠르다 레지스터보다는 용량이 크다 출처 컴퓨터 내부 여러개의 캐시 메모리를 살펴보면 L1, L2 : CPU 내부에 존재하는 캐시 메모리 L3 : CPU 외부 속도 : L1 > L2 > L3 용량 : L3 > L2 > L1 캐시메모리는 CPU가 메모리로부터 가져올 데이터를 어떻게 예측하는걸까? `참조 지역성의 원리`에 입각하여 캐시메..

CS 2024.04.19

[CS] 메모리 주소 체계와 MMU

실제 메모리 주소 체계는 2가지로 구분할 수 있습니다. 1. 물리주소 2. 논리주소 주소 체계를 구분하는 이유? 프로그램이 실행되고 삭제되면서 주소가 달라지기 마련입니다. 심지어 같은 프로그램을 실행할때, 오늘 실행한 주소값과 내일 실행한 주소값이 다를 수 있습니다. 주소 체계 `물리 주소` : 메모리 입장에서 하드웨어상 주소. `논리 주소` : CPU와 실행 중인 프로그램 입장에서 바라본 주소. 모든 실행 중인 프로그램의 0번지부터 시작함 논리주소 측면에서 프로그램1, 프로그램2는 0부터 시작하는 자신만의 논리주소를 가질 수 있습니다. 그리고 CPU는 해당 논리주소를 받아들이고, 해석하고, 연산합니다. 다만, 실제 메모리에 접근하기 위해서 물리주소로 변환해야 하는데 이때 MMU 개념이 필요합니다. MM..

CS 2024.04.17