CS 51

[운영체제] KOCW 반효경 교수님 강의 - 4. System Structure & Program Execution 2

인터럽트 인터럽트마다 처리해야될 작업이 커널에 함수로 정의되어있음 인터럽트 벡터 : 인터럽트 종류를 식별 인터럽트 벡터로 커널의 주소를 식별하여 CPU가 처리해야할 작업을 찾음 인터럽트의 종류 하드웨어 인터럽트(Interrupt) device controller와 같은 하드웨어가 발생시킨 인터럽트 소프트웨어 인터럽트(Trap) 1) 시스템 콜 : 사용자 프로그램이 운영체제 함수를 호출 2) Exception : 프로그램 오류에 의한 인터럽트 Timer 프로세스가 할당한 시간만큼 CPU를 사용하면 인터럽트를 보내는 하드웨어 CPU CPU는 매번 PC의 주소 작업만 처리 mode bit에 따라 0이면 운영체제로 모든 명령어 처리, 1이면 사용자 프로그램으로 제한된 명령어 처리 동기식 입출력 (Synchron..

CS/운영체제 2022.03.27

[알고리즘] Dynamic Programming을 이해하기 (점화식)

알고리즘의 고비, DP 학부생 때 알고리즘 수업을 들을 때 DP는 너무 쉬운 과목이었습니다. 메모이제이션으로 계산양을 줄인다는 이야기 외에는 이해를 못했기 때문입니다. 석사과정에서 알고리즘은 한학기 내내 DP 문제만 다루는 내용이었습니다. 그 때서야 저는 점화식이 눈에 들어왔고, substruct를 정의해내야 한다는 사실을 알았으며, 2차 배열이 많이 활용된다는 정도 이해하였습니다. 알고리즘에서 DP는 어려운 단원에 속하고, 그렇기 때문에 몇 년 전에는 풀었던 문제도 다시 풀면 못풀고 잊어버리는 듯 합니다. 지금 코딩테스트를 공부하면서, 얼핏 이해했다고 생각한 DP를 활용하지 못하는 제 자신을 보면서 확실한 이해가 필요하다고 생각했습니다. BOJ 2616 소형기관차 제가 간과했던 사실 중 하나는 점화식의..

[운영체제] KOCW 반효경 교수님 강의 - 3. System Structure & Program ExeCution 1

컴퓨터 하드웨어의 동작에 대한 챕터 컴퓨터 시스템 구조 컴퓨터 CPU 메모리에서 명령어를 하나씩 읽어서 실행하고 끝나면 인터럽트 확인 register : 메모리보다 더 빠른 작은 공간 mode bit : CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분 [인터럽트 과정] Interrupt line CPU는 메모리에서 명령어 하나씩 실행하는 일만 반복 [1] 키보드에서 입력을 받고, 화면 출력, Disk에서 데이터 읽어오기 등 작업이 필요 [2] Disk에서 데이터가 필요하면 device controller에게 읽어오라고 일을 시킴 [3] device controller는 Disk에서 데이터를 읽어서 local buffer에 저장 [4] 그동안 빠른 CPU는 계속 작업을 진행 [5] I/O가 ..

CS/운영체제 2022.03.11

[운영체제] KOCW 반효경 교수님 강의 - 2. Introduction to Operating System

운영체제 정의 하드웨어 바로 위에 올라가는 소프트웨어 커널 : 운영체제의 핵심 기능으로, 항상 메모리에 상주 운영체제 기능 사용자에게 편리한 기능 제공 자원을 효율적으로 관리 성능 : 더 빠르게 형평성 : 모든 사용자가 공평하게 운영체제 분류 동시 작업 사용자 처리 방식 시분할 실시간 일괄 처리(batch) : 모아서 처리하는 것이 더 효율적이기 때문 용어 -> 다 비슷한 용어 Multi Tasking 동시 실행 Multi Programming 메모리 관점 메모리에 여러 프로그램이 올라가는 것 Time Sharing 시분할 CPU 관점 Multi process [구분] Multi Processor 하나의 컴퓨터에 CPU가 여러 개 붙어 있음을 의미 운영체제의 예 Unix 다중 사용자 C언어로 작성 공개 ..

CS/운영체제 2022.03.11

[Web] 정적 컨텐츠에서 스프링까지 (Java를 모르는 내가 스프링에 도달하기까지)

스프링을 공부하는 중입니다 저는 소프트웨어를 전공했음에도 웹이라고는 html, javascript(현재는 바닐라 자바스크립트라고 부르는 것 같더군요), php와 LAMP를 이용한 간단한 서버를 만드는 경험이 전부였습니다. 그리고 스프링을 처음 접했을 때 상당히 혼란스러웠습니다. 쉽게 따라할 수 있고 동작은 하는데... 내가 만들던 서버와의 gap이 너무 크게 느껴지는 겁니다. 예를 들면, 분명 서버(Apache 서버)를 설치 안했는데 localhost로 접속이 된다는 것도 신기했구요. 아직 부족함이 많지만, 그 사이의 공백을 채우는 자취로써 간단히 정리해보려합니다. 웹이란 무엇인가 https://pythaac.tistory.com/166 웹이란 무엇일까? Web Server와 Web Application..

CS/웹 2022.02.04

[JAVA] Hash와 Thread-Safe

현재 개발중인 코드에서 DB 데이터를 읽어 한 table의 정보를 바탕으로 HashMap의 mapping table을 저장하여 사용합니다. 그런데 이 table의 정보가 바뀔 수 있고, 그럴 때마다 다시 DB에 접근하는 것이 비효율적이라 생각하였습니다. 그래서 DB 정보가 바뀔 때마다 이 table도 같이 변경하도록 구현하였습니다. 이 때 들었던 생각이 Thread-safe입니다. 현재는 table에 동시 접근하는 일이 없지만, DB와 sync를 맞추고 있는 이 테이블에서 동기화 처리하지 않으면 DB와 integrity가 깨질 수 있습니다. 그래서 제가 사용하는 자료구조가 동기화 처리를 하는지 확인해보아야했습니다. HashMap은 unsynchronized 현재 mapping table로 사용했던 클래스..

CS/언어 2022.01.19

[JAVA] Long에 대하여

Spring boot로 프로젝트를 하다보니, 정수형 변수로 Long을 자주 사용하게 되었습니다. 그러다 for loop에서 보통 int를 사용하다가 long을 사용하게 되었는데, long형을 사용했을 때 발생하는 문제가 없나?라는 고민을 시작으로 몇가지 알아본 사실을 적어보려 합니다. Long과 long의 관계 long은 JAVA의 원시타입인 변수타입이고, Long은 long을 다루는 객체를 의미합니다. 이처럼 원시타입을 객체로 다루기위해 사용하는 클래스를 Wrapper 클래스라고 합니다. 원시타입을 Wrapper 클래스인 참조타입으로 만드는 것을 boxing, 그 반대를 unboxing이라고 합니다. 원시타입과 참조타입인 객체는 확연하게 분리되어야하는데, 제가 생각하는 것보다 두 경계가 크지 않았습니다..

CS/언어 2022.01.12

[JAVA] 자바의 다중상속

두 객체를 합친 객체를 정의하고싶다 JAVA로 개발을 하면서 데이터 중복과 사용하는 멤버의 범위 제한 등을 위해서 객체의 상속을 사용하게됩니다. 저는 이번에 데이터 중복을 줄이기 위해 상속을 사용하고 싶었습니다. A라는 객체와 B라는 객체의 멤버가 합쳐진 C 객체, 정확히 말하면 DAO A와 B가 있고 두 Entity가 join된 DAO인 C를 정의해야했습니다. 만약 다중상속이 된다면, 저는 A와 B를 모두 C가 상속하여 멤버변수를 다시 정의할 필요없이 관련 메서드만 작성하면 간단하게 C를 정의할 수 있습니다. 멤버가 많을수록 C를 정의하기 편하기도 하고, 중복된 이름의 변수가 줄어들기 때문에 더 선호하는 방식일 수 있습니다. 다중 상속을 지원하지 않는 이유 C++은 다중 상속이 지원되는 것으로 알고있습..

CS/언어 2022.01.11

[JAVA] POJO(Plain Old Java Object)

아직 자세히 알아보지 않은 상태이며, 추후 업데이트가 필요합니다 POJO POJO란 특정 기술에 의존이 없는 순수 자바 객체를 의미한다고 합니다. JAVA의 장점 중 하나인 재사용성을 이용해 보통 implements나 extends로 구현된 객체에 의존된 형태로 편하게 사용할 때가 많습니다. 그러나 이러한 방식은 프레임워크에 대한 의존성이 높아 가독성과 확장성에 문제가 될 수 있습니다. POJO와 의존성 그럼에도 Spring PSA(Portable Service Abstraction)에 의해 Spring은 객체를 의존성이 있는 형태로 구현하면서도 POJO를 지킬 수 있다고 합니다. 예를 들어, Spring은 ORM의 JPA 표준 인터페이스를 정의하여 Hibernate와 같은 ORM 프레임워크가 해당 인터..

CS/언어 2022.01.06