동기화는 무엇일까? 프로세스 동기화 (Process Synchronization) --운영체제에서 여러 프로세스가 공유 자원을 함께 사용할 때,경쟁을 방지하고 일관성을 유지하며 공유하기 위한 메커니즘이다. 즉, 프로세스들 사이의 수행 시기를 맞추는 것을 의미한다.실행 순서 제어 : 프로세스를 올바른 순서대로 실행한다.상호 배제 : 동시에 접근하면 안 되는 자원에 하나의 프로세스만 접근하도록 한다.프로세스뿐만 아니라 스레드도 동기화 대상이다.정확히는 실행의 흐름을 갖는 모든 것이 동기화의 대상이다. 실행 순서 제어를 위한 동기화프로세스 A와 프로세스 B가 존재한다고 가정하자.프로세스 A : test.txt파일에 값을 저장하는 프로세스프로세스 B : test.txt파일에 값을 읽는 ..
전체 글
CPU 스케줄링 알고리즘은 어떤 것들이 있을까? CPU 스케줄링 알고리즘 --CPU 스케줄링 알고리즘은운영체제가 CPU의 자원을 여러 프로세스나 스레드에게 효율적으로 분배하기 위해 사용되는 알고리즘이다. 대표적인 CPU 스케줄링 알고리즘선입 선처리 스케줄링 (FCFS, First Come First Served)최단 작업 우선 스케줄링 (SJF, Shortest Job First)라운드 로빈 스케줄링 (Round Robin)최소 잔여 시간 우선 스케줄링 (SRT, Shortest Remaining Time)우선순위 스케줄링 (Priority)다단계 큐 스케줄링 (Multilevel Queue)다단계 피드백 큐 스케줄링 (Multilevel Feedback Queue)-- 선입 선처리 스케줄..
CPU 스케줄링은 무엇일까? CPU 스케줄링 --모든 프로세스는 운영체제로부터 자원을 할당받아 실행된다.프로세스마다 필요로 하는 자원은 각기 다르지만, 공통으로 사용하는 자원은 CPU다. 모든 프로세스들은 CPU가 필요하고 먼저 CPU를 할당받아 사용하고 싶어 한다.(CPU를 할당받아야 해당 프로세스의 작업을 시작할 수 있기 때문이다.) 그래서 운영체제게 프로세스들에게 공정하고 합리적으로 CPU의 자원을 배분하는 것을 "CPU 스케줄링"이라고 한다. CPU 스케줄링은컴퓨터의 성능과도 직결되는 부분이라 매우 중요한 역할이다.CPU를 현명하게 배분하지 못하면반드시 실행되어야 하는 프로세스들이 실행하지 못하거나,급하지 않은 프로세스들로만 주로 실행되는 등무질서한 상태가 발생할 수 있다.-- 프로..
스레드란 무엇인가? 스레드 (Thread) --스레드는프로세스에서 동작(구성)하는 실행의 흐름 단위로,간단하게 "실행의 단위"라고 생각하면 된다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며,스레드를 이용하면 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있다. -- 프로세스와 스레드 --스레드라는 개념이 없을 당시의 프로세스는 한 번에 하나의 일만 처리했다.그래서 프로세스의 모든 동작은 [ A작업 끝 -> B작업 시작 -> B작업 끝 -> C작업 시작 ... ]처럼 순차적으로 동작한다.한 번에 하나의 작업만 처리하는 프로세스를 "단일 스레드 프로세스"라고 부르기도 한다. 스레드라는 개념이 도입되면서하나의 프로세스가 한 번에 여러 작업을 동시에 처리할 수 있게 되었다.즉, 여..
프로세스는 무엇일까? 프로세스 (Process) --프로세스는실행 중인 프로그램을 의미한다. 프로그램은 실행되기 전까지는그저 보조기억장치에 저장되어 있는 데이터일 뿐이지만,해당 프로그램을 보조기억장치에서 메모리에 적재하고 실행하는 순간해당 프로그램은 프로세스가 된다. (실행 중인 프로그램) 윈도우는 [작업 관리자]를 통해 확인할 수 있다. 포그라운드 프로세스 (foreground process)는현재 크롬 브라우저, 작업 관리자처럼 사용자가 보는 앞에서 실행 중인 프로세스를 의미한다. 백그라운드 프로세스 (background process)는사용자가 보지 못하는 뒤(내부)에서 실행 중인 프로세스를 의미한다.그리고 백그라운드 프로세스 중에서 사용자와 상호작용하지 않고그저 묵묵히 정해진 일만 수..
변수와 상수는 무엇이며, 어떻게 작성할까? 변수 --변수는단일 값을 저장하고 관리하기 위한 이름을 붙인 메모리 공간이다. 변수 기본 형식[접근 제한자] ;// 변수만 생성 (공간만 생성)[접근 제한자] = ;// 변수 생성과 동시에 값 할당public double a = 3.14;// double타입인 변수 a를 생성과 동시에 3.14값을 할당 (접근 제한자는 public으로 지정)int b = 5;// int타입인 변수 b를 생성과 동시에 5값을 할당 (접근 제한자는 생략하였으므로 기본값인 private로 지정int c;// int타입인 변수 c를 생성 변수 규칙변수를 사용하기 전에 반드시 초기화변수명 대소문자 구분변수명은 예약어와 동일한 명칭 사용 불가변수명의 시작은 무조건 영문 작..
자바 소스 코드를 작성할 때 어떠한 규칙이 있을까? 예시 코드 --Hello.java 소스코드class Hello { public static void main (String[] args) { System.out.println("Hello World."); }}-- 자바 소스코드 실행 시 동작 순서 --자바 소스 코드를 작성한 (.java)파일 생성IDE를 통해 (.java)파일 실행 (프로그램의 시작점인 main() 메서드가 존재하는 파일 위치에서 실행해야 한다.)컴파일러를 통해 컴파일 동작 (.java 파일 -> 바이트코드(.class) 파일로 변환)JVM을 통해 바이트코드(.class)파일을 해석하고 실행 (+ 메모리 적재)4번에 이어서 JVM이 main() 메..
빌드는 무엇이며, 어떻게 동작하는 것일까? 빌드 (Build) --빌드는소스 코드를 최종적으로 실행 가능한 형태로 변환하는 과정을 의미한다. Java의 빌드는단순히 컴파일만 하는 것이 아닌 "컴파일", "패키징", "의존성 관리", "테스트", "배포 준비" 등이포함되어 있는 더 넓은 개념이다. Java 소스코드 빌드 주요 단계컴파일 : java 소스코드(.java 파일)를 바이트코드(.class 파일)로 변환하는 단계의존성 관리 : 해당 프로그램이 사용하는 "외부 라이브러리" or "모듈"을 추가(관리)하는 단계패키징 : 바이트코드와 관련 리소스 파일들을 하나의 아카이브 파일로 묶는 단계 (jar파일)테스트 : 작성했던 코드가 원했던 동작으로 동작하는지 확인 단계리소스 처리 ..