전체 글

가치있는 글 쓰기!
OS 동기화 Race condition (자원 경쟁) 두 개의 프로세스가 하나의 자원에 대해 동시에 접근하는 상태 예시1. kernel 수행 중 인터럽트 발생 kernel 모드가 실행중인데 인터럽트가 들어왔다. (예를 들면, 타이머 인터럽트) 인터럽트 또한 OS가 주도권을 갖고 있는 상황이기 때문에 kernel mode이며 이전에 실행되던 프로세스와 같은 주소공간을 공유하고 있다. 이에 따라 공유된 data 를 가지고 경쟁하게 되는 상황이 된다. 예시2. process가 system call를 하여 kernel mode로 수행 중인데 인터럽트 당하여 context switch 가 일어나고 다시 kernel mode로 들어가는 경우 모든 프로세스는 kernel mode에서 다같은 공유 데이터 공간을 쓰기 ..
_ KOCW 반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다._ CPU 스케줄링이 필요한 이유? CPU 버스트 시간은 사용자 프로그램이 CPU를 직접 이용하여 명령을 수행하는 시간을 의미한다. x축이 CPU 버스트 시간이고 y축이 빈도인 그래프를 살펴보면, 왼쪽은 CPU 버스트 시간이 짧은 작업 (입출력 요청 후 바로 다른 CPU로 전환)인 IO 바운드 프로세스이며, 오른쪽은 CPU 점유 시간이 긴 CPU 바운드 프로세스이다. 만약 모든 프로세스가 동일하다면 수행하는 작업에 따라 응답 시간의 차이는 없을 것이다. 하지만 위 그래프처럼 CPU 점유 시간이 긴 프로세스와 짧은 프로세스가 존재하기에, CPU 버스트 시간이 짧은 프로세스에게 우선적으로 CPU를 할당할 수 있는 스케줄링이 필요하다. (이렇..
KOCW 반효경 교수님 운영체제 강의와 도서를 정리한 내용입니다. 프로그램 구조 메모리 주소 영역은 크게 code, data, stack 세 가지로 구분된다. 코드 영역은 기계어 instruction이 보관되는 공간이다. 데이터 영역에는 프로그램이 사용하는 데이터, 예를 들면 전역 변수 등이 저장되어 있다. 스택 영역은 함수 호출 시 해당 함수가 실행을 완료하고 돌아갈 주소와 데이터를 임시로 보관하는 곳이다. (참고로, 스택에는 스레드 정보도 저장될 수 있다.) 스택(Stack) vs 프로세스 제어 블록(PCB) ? 스택도 프로세스 제어 블록(PCB)과 비슷한 역할을 수행한다. 두 개념의 차이점은 어떤 상황에서 호출되느냐에 있다. 프로그램 내에서 발생하는 일반 함수 호출의 경우, 복귀 주소가 스택에저장된..
KOCW 반효경 교수님 운영체제 강의와 운영체제와 정보기술의 원리 도서를 정리한 내용입니다 컴퓨터는 내부장치와 외부장치로 나뉘며, CPU와 메모리부터 시작해 IO 디바이스를 살펴볼 수 있다. 컴퓨터 구조 메모리 내부장치인 메모리는 휘발성이며, CPU가 실행할 명령어와 데이터를 저장하는 공간으로, 여러 개의 사용자 프로그램과 운영체제(OS)가 올라간다. OS 는 전체 파일이 모두 올라가진 못하고 필수적인 부분만 항상 메모리에 올라가있다. 이를 좁은 의미에서의 커널이라고 부른다. CPU CPU 는 메모리에 적재되어 있는 instruction를 가지고 와서 한줄씩 실행시킨다. 이때의 instruction은 기계어에 가까운 어셈블리어이다. (add, sub 등) IO 장치 외부장치인 IO 장치에는 키보드, 하드..
대칭키 Ks(Ks(m)) = m 수신자와 발신자가 같은 key (Ks) 를 갖는다. 즉 복호화, 암호화에 쓰이는 key 가 같다. 하지만 둘다 같은 key를 갖게 하기 위한 절차를 거치지 않는 이상 같은 것을 공유하고 있기 힘든 문제점이 있고 key 를 뺏기면 모든 정보가 노출되는 문제점이 생긴다. 이를 보완하기 위해 나온 것이 비대칭키이다. 비대칭키 암호화와 복호화할 때 쓰는 키가 다르다. 모두에게 공개되어 있는 공개키와 본인만 갖는 비밀키로 나뉜다. Alice가 Bob에게 데이터를 보내고 싶으면 공개키 (Kb+) 로 암호화를 해서 보낸다. Bob은 받은 데이터를 비밀키(Kb-) 로 복호화하여 내용을 확인한다. 비대칭키는 이렇게 안전성을 보장하지만 _현저히 느린 문제 _때문에 이를 대칭키와 적절히 활용..
· 📗Java
String 클래스는 char[] 배열을 인스턴스 변수로 갖는 클래스이다. String 클래스 특징, 메소드 그리고 관련 클래스인 StringBuffer 와 StringBuilder 에 대해 알아보도록 하자. String 은 변경 불가능한 클래스이다. (Immutable Class) String a = "a"; String b = "b"; a = a + b; // "ab" 예시를 보면 a 클래스의 문자열이 "a" 에서 "ab" 로 바뀌었다. 변경 불가능한 클래스인 String 이 어떻게 값을 바꾸었을까? 결론부터 말하면 값을 바꾸진 못한다. a, b 모두 클래스이기 때문에 변수 자체에는 주소값이 저장되어 있다. 해당 주소값에 가보면 문자열 데이터가 저장되어 있다. a = a+b 에서 두 가지 일이 벌어진..
· 📗Java
객체 지향 언어의 핵심은 추상화입니다.가장 관련된 개념인 추상클래스와 인터페이스에 대해 알아보도록 합시다! 문제 상황 정의1. 대학 구성원에 대한 엔티티를 설계하고 있습니다. 학부생, 대학원생, 교수가 대학 구성원에 속합니다. 학부생, 대학원생, 교수 모두 공통적으로 K 대학교의 멤버 (Member) 입니다. 멤버로서 공통적인 인스턴스 변수를 가질 것이기 때문에 Member 클래스를 정의하고 이를 상속받아 학부생(Undergraduate), 대학원생(Graduate), 교수(Professor) 를 정의하도록 해보겠습니다.  Member 클래스 정의 - 추상클래스 (Abstract Class)public abstract class Member { String identificationNumber; ..
· 📗Java
Error 와 Exception 에러 (Error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류. 프로그램을 강제 종료시킬 수 있다. 예외 (Exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류. 예외는 처리를 하여 프로그램의 비정상 종료를 방지해야 하고 이를 예외처리라고 부릅니다. Runtime Exception 클래스 예외는 두 가지로 분류됩니다. RuntimeException 클래스 프로그래머의 실수로 발생하는 예외 예외 처리가 선택적이며 컴파일 때 체크되지 않고 런타임에 발생하는 예외 - Unchecked Exception ex) NullPointerException, IndexOutOfBoundException 이 외의 Exception 클래스 사용자의 실수..
· 📗Java
디폴트 메소드는 jdk 1.8부터 생긴 메소드입니다. 추가된 이유는 interface 구현 문제 때문인데 이에 대해 예시를 보며 알아보도록 하겠습니다. Car 클래스가 Runnable 인터페이스를 상속받는 예시를 확인해 보겠습니다. interface Runnable { void forward(int d); // 인터페이스의 메소드는 항상 추상메소드 public abstract } class Car implements Runnable { String type; String color; public void forward(int d) { System.out.println("move : " + d); } } 이때 만약에 Runnable 인터페이스에 변경사항이 생긴다면 어떻게 될까요? Runnable 한 것은 ..
문제링크 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 문제 자체의 이해는 어렵지 않은데 구현이 어려운 케이스 풀이 삭제해야할 인덱스를 ArrayList에 담았다. 그리고 ArrayList 에 있는지 없는지 확인하여 없으면 StringBuilder 에 append 하도록 했는데 구현이 복잡했다. import java.io.*; import java.math.BigInteger; import java.util.*; public class Main { static Buffered..
kkyu0718
개발 로그 스토리지