전체 글
[컴퓨터 구조] MIPS 아키텍쳐, 재귀함수 구현
MIPS 아키텍쳐의 어셈블리어를 사용해서 재귀함수를 구현해보겠습니다. 재귀 함수는 자기 자신을 호출하는 함수인데, 스택 메모리가 필요합니다. 스택 메모리는 함수가 호출될 때마다 연산에 필요한 매게 변수, caller의 address 등 필요한 데이터를 저장하는 임시 저장 메모리입니다. 스택 포인터를 직접 다뤄보면 재귀 함수가 실행될 때 스택 메모리가 어떻게 변하는지 이해할 수 있습니다. 예제를 살펴보기 전에, 함수를 구현하는 법과 jal instruction에 대해 먼저 알아보고 factorial 함수와 주어진 정수의 각 자리 수의 곱을 구하는 함수를 구현하겠습니다. 함수 구현과 jal instruction ... sum(a,b); ... } int sum (int x, int y) { return x ..
[OS] 인터럽트, 시스템 콜, 커널모드, 사용자모드
이전에 프로세스와 멀티쓰레딩에 관련된 게시물을 올렸는데, 인터럽트 시스템콜에 대한 정의와 동작 과정에 대한 설명 없이 컨텍스트 스위칭, 동기 비동기 IO에 대한 내용을 다루니 글이 난잡하고 가독성이 참 떨어진다는 생각을 했습니다. 프로세스, 멀티쓰레딩, 동기화문제 운영체제의 중요한 챕터를 공부하기 전에 반드시 알아야 하는 컴퓨터 시스템의 간단한 구조와 커널모드, 사용자모드, 인터럽트, 시스템 콜 등 꼭 중요한 개념을 이 포스팅에서 정리하려고 합니다. 1. 간략한 컴퓨터 시스템 인터럽트와 시스템콜에 내용을 정리하기 전에, 컴퓨터 시스템의 대략적인 구조를 살펴보도록 하겠습니다. 구성 요소를 소개하면서 그 역할에 대해 간략히 소개할 것인데, 자세한 개념은 뒤에 다시 설명할 예정입니다. CPU 구조 CPU CP..
[OS] 뮤텍스, 세마포어, 모니터
이번 포스팅에서는 뮤텍스, 세마포어, 모니터에 대해 알아보겠습니다. 뮤텍스와 세마포어를 어떻게 구현할 수 있는지, spin lock의 장단점은 무엇인지, binary 세마포어와 뮤텍스는 어떤 차이가 있는지를 이해할 수 있습니다. 그리고 모니터의 conditional variable과 entry queue를 보고 게시물에서 첨부한 모니터의 schematic view를 이해할 수 있습니다. 만약, 동기화를 해야하는 이유와 락을 걸고 해제하는 과정을 모른다면 먼저 아래 게시물을 보고 이 게시물을 읽는 것을 추천합니다. https://mini98.tistory.com/69 [OS] 동기화 문제, Peterson's solution, 하드웨어 명령어 동기화 문제를 다룹니다. 예제를 통해 어떤 경우에 동기화 문제가..
[자바 스터디] 멀테쓰레드 프로그래밍
https://github.com/whiteship/live-study/issues/10 10주차 과제: 멀티쓰레드 프로그래밍 · Issue #10 · whiteship/live-study 목표 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 마감일시 2021년 1월 23일 github.com 목차 Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 1. Thread 클래스와 Runnable 인터페이스 쓰레드를 구현하는 방법은 Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있습니다...
[OS] 동기화 문제, Peterson's solution, 하드웨어 명령어
동기화 문제를 다룹니다. 예제를 통해 어떤 경우에 동기화 문제가 필요한지 알아보고, race condition, critical section problem, 동기화 등 용어를 정리합니다. 그리고 동기화의 조건에 대해 알아본 뒤 Peterson's solution이 어떻게 조건을 만족하는지 살펴보겠습니다. 그리고 마지막으로 atomic한 하드웨어 명령어로 얼마나 간단하게 mutual exclusion을 만족하는지 살펴보겠습니다.목차동기화 문제, race condition, critical section problemPeterson's algorithmHardward Support for Synchronization1. 동기화 문제동기화가 무엇이고, 어떻게 동기화 문제를 해결할지 알아보기 전에 어떤 상황에..
[프로그래머스] 체육복 파이썬
https://school.programmers.co.kr/learn/courses/30/parts/12244 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 고득점키트 탐욕법의 Level1 문제이다. 1. 배열을 이용한 풀이방법 2. 집합과 정렬을 이용한 풀이방법 전체 학생수가 n명이고, 도난당한 학생 수가 k 명이라면 첫 번째 방법은 O(n)으로 답을 구할 수 있고, 두 번째 방법은 정렬을 사용하기 때문에 O(klogk)로 구할 수 있다. 위 문제는 전체 학생수가 30명이라서 어느 방법으로 풀던 상관없지만, 만약 n이 충분히 크다고 가정하면..
[OS] CPU scheduling
Operating System Concepths, 10th edition을 학습하고 정리한 내용입니다. CPU scheduling 기본 개념 CPU 스케쥴링이 왜 필요한지, 구체적으로 어떤 알고리즘이 있는지 알아보겠습니다. CPU - I/O burst cycle CPU만 사용하는 일련의 단계를 CPU 버스트라 하고 I/O 작업을 실행하는 일련의 단계를 I/O 버스트라고 합니다. 프로그램은 CPU 버스트와 I/O 버스트를 번갈아가며 실행합니다. 그런데 어떤 프로그램은 사람과 인터렉션이 빈번하게 일어나서 파일을 읽고 쓰는 시간이 길어 I/O 버스트가 메인이 될수도 있고, 어떤 프로그램은 CPU만 쭉 사용해서 연산을 쉬지 않는 경우도 있습니다. 즉 프로그램은 CPU 버스트와 IO 버스트의 반복이지만 프로그램마..
[OS] Threads & Concurrency
Operating System Concepths, 10th edition을 학습하고 정리한 내용입니다. 학습 목표 쓰레드의 기본 구성 요소를 설명할 수 있고, 쓰레드와 프로세스의 차이를 설명할 수 있다. 멀티쓰레드 프로세스의 장점과 주요과제를 설명할 수 있다. Pthreads, Java 등 다양한 threading API를 사용해서 멀티쓰레드 어플리케이션을 설계할 수 있다. implicit threading의 다양한 접근법에 대해 설명할 수 있다. Windows와 Linux에서 쓰레드를 어떻게 다루는지 차이점을 설명할 수 있다. Thread 쓰레드의 구성 요소 쓰레드는 CPU utilization의 기본 단위이다. 독립적으로 thread ID와 program counter와 register set과 st..
[OS] 프로세스 : 프로세스 개념, 컨텍스트 스위칭, 생성 및 통신
프로세스의 개념과 컨텍스트 스위칭, 그리고 유닉스에서 프로세스를 생성하고 종료하는 방법에 대해 알아봅니다. 추가로 프로세스간 통신에 대해 아주 간략히 알아봅니다. 아래 포스팅을 먼저 읽고 게시물을 읽으면 좋을 것 같습니다. [OS] 인터럽트, 시스템 콜, 커널모드, 사용자모드 이전에 프로세스와 멀티쓰레딩에 관련된 게시물을 올렸는데, 인터럽트 시스템콜에 대한 정의와 동작 과정에 대한 설명 없이 컨텍스트 스위칭, 동기 비동기 IO에 대한 내용을 다루니 글이 난잡하 mini98.tistory.com 목차 프로세스 개념 프로세스와 메모리 레이아웃 프로세스 상태 PCB 프로세스 스케쥴링 스케쥴링큐 스케쥴러 컨텍스트 스위칭 Operation on process 프로세스 통신 프로세스 개념 1. 프로세스와 메모리 레..
[백기선 자바스터디] 람다식
https://github.com/whiteship/live-study/issues/8 8주자 과제: 인터페이스 · Issue #8 · whiteship/live-study 목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터 github.com 목차 1. 람다식 사용법 2. 함수형 인터페이스 3. Variable Capture 4. 메소드, 생성자 레퍼런스 https://mini98.tistory.com/33 [더 자바, java8] 함수형 인터페이스와 람다 본 게시물은 인프런 백기선님 강의 "더 자바, java8"을 학습하고 개인적으로 정리한 내용입니다. https://w..