[자바/Java] Call by Value vs Call by Reference
·
공부/자바
Call by Value vs Call by Reference 메소드 호출할 때 파라미터를 전달하는 방법 Call by Value 함수의 인자를 전달할 때 값만 전달하는 방식 메소드 호출할 때 값을 넘겨줌 Pass by Value라고 부르기도 함 메소드를 호출하는 호출자(Caller)의 변수와 호출 당하는 수신자(Callee)의 파라미터는 복사된 서로 다른 변수 값만 전달하기 때문에 수신자의 파라미터를 수정해도 호출자의 변수에는 영향을 끼치지 않음 메모리를 절약할 수 있으며 속도가 빨라짐 -> 임베디드 환경에서는 C 포인터를 이용해 코딩 예 : C언어 포인터 변수를 파라미터 받게 하고 함수를 호출할 때 주소 연산자를 이용해 주소값을 직접 념겨 직접적인 메모리 참조가 가능 값을 넘겨받은 메소드에서 값을 복..
[운영체제] 주소 공간과 가상 메모리(Address Space, Virtual Memory)
·
공부/운영체제
주소 공간과 가상 메모리 주소 공간 (가상 주소 공간, VAS, Virtual Address Space) 의미 각 프로세스 당 주어지는 논리적인 공간 OS가 프로세스를 시작할 때 할당해주는 가상 메모리 공간 프로세스에서 사용 가능한 주소의 범위 프로세스가 참조하는 주소 OS가 제공하는 가짜 메모리 크기는 물리 메모리(RAM)의 크기와는 독립적 레지스터 크기에 종속적 운영체제는 프로세스에게 연속된 가상 주소 공간을 제공하고, 이를 필요한 크기의 물리 메모리 페이지로 매핑 메모리 공간의 낭비를 최소화 제공 메모리 32bit 시스템 보통 4GB 크기의 가상 메모리 영역을 할당 보통 하위 2GB를 유저 공간에, 상위 2GB는 시스템 공간에 사용 하지만 사용자에 의해 유저 공간을 3GB로 늘릴 수 있음(/set ..
[운영체제] PCB와 Context Switching
·
공부/운영체제
PCB와 Context Switching PCB (Process Control Block, 프로세스 제어 블록) 의미 특정 프로세스에 대한 정보를 담고 있는 자료구조 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳 프로세스의 상태 정보를 저장하는 구조체 운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리하고 제어 프로세스가 생성될 때 마다 고유의 PCB가 생성되어 메인 메모리에 유지되고 프로세스가 완료되면 제거 PCB는 프로세스의 중요한 정보를 포함하고 있으므로 일반 사용자는 접근하지 못하는 보호된 메모리 영역에 존재 진행 과정 프로그램 실행 프로세스 생성 프로세스 주소 공간 (코드, 데이터, 스택) 생성 이 프로세스의 메타데이터들이 PCB에 저장 상세 구조 Process id ..
[운영체제] 시스템 콜(System Call)
·
공부/운영체제
시스템 콜 시스템 콜 의미 운영체제가 제공하는 서비스를 사용하기 위한 프로그래밍 인터페이스 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많으 부분이 커널 모드를 사용 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 함 통상적으로 시스템 콜은 여러 종류의 기능으로 나뉘어져 있음 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이러한 번호에 따라 인덱스 되는 테이블을 유지된다. 아래 그림은 open() 시스템 콜을 호출 했을 때 운영체제에서 어떻게 처리되는지를 보..
[운영체제] 인터럽트(Interrupt)
·
공부/운영체제
인터럽트 인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능 대부분의 컴퓨터는 한 개의 CPU를 사용하므로 한 순간에는 하나의 일 밖에 처리할 수 없기 때문에 어떤 일을 처리하는 도중에 우선 순위가 급한 일을 처리할 필요가 있을 때 대처할 수 있는 방안이 필요 인터럽트는 CPU가 프로그램을 실행하고 있을 때 입/출력 장치나 혹은 다른 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 일시 중단하고, 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리 어느 한 순간에 CPU가 실행하는 명령은 하나인데 다른 장치와의 대화는 어떻게 이루어..
[운영체제] CPU 스케줄링 알고리즘
·
공부/운영체제
CPU 스케줄링 알고리즘 CPU 스케줄링 (CPU Scheduling) CPU core가 하나라면 한 번에 하나의 프로세스만 가능 CPU 이용율을 극대화하기 위해서는 멀티 프로그래밍이 필요함 이 때 필요한 것이 CPU 스케줄링 언제 어떤 프로세스에 CPU를 할당할지 결정하는 작업 목표 높은 CPU 이용률 주어진 시간에 많은 일 준비 큐에 있는 프로세스 적게 짧은 응답 시간 CPU 스케줄러가 스케줄링을 결정하는 경우 실행(running) 상태에서 대기(waiting) 상태로 전환(switching)될 때 실행(running) 상태에서 준비(ready) 상태로 전환(switching)될 때 대기(waiting) 상태에서 준비(ready) 상태로 전환(switching)될 때 종료(Terminated)될 때 ..
[Android/Kotlin] 다른 Activity 종료
·
공부/안드로이드
현재 Activity(액티비티)가 아닌 다른 Activity(액티비티)를 종료하고 싶을 때 1. 지우고픈 Activity(액티비티)에 변수 추가 나는 StartActivity를 지우고 싶으니 StartActivity에 아래 코드를 추가했다. companion object { lateinit var _startActivity: StartActivity } 2. 다른 Activity(액티비티)에서 지우고픈 Activity(액티비티) 종료 StartActivity를 종료하게할 액티비티에서 StartActivity 종료 코드를 넣는다. 예를 들어 MyActivity에서 StartActivity를 종료하고 싶으면 MyActivity에 아래 코드를 추가하면 된다. 단, 아래 코드는 내게 맞춤용이며 액티비티명과 변수..
[Android/Kotlin] 복사하기 기능
·
공부/안드로이드
val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager val clip = ClipData.newPlainText("코드", "복사하는 문자 내용입니다.") clipboard.setPrimaryClip(clip)