TIL - 2021/04/22

dawn·2021년 4월 22일
0

TIL

목록 보기
1/14

OS

커널과 유틸리티 프로그램이란?

커널
-운영체제의 각종 기능들 중 사용자와 실행 프로그램을 위해 매우 빈번하게 사용되는 부분
-컴퓨터가 처음 부팅될때에 주기억 장치에 적재되어시스템의 운영이 종료(Shutdown) 될 때까지 계속해서 주기억 장치에 남아 있게 되는 부분

유틸리티
-자주 사용되지 않는 운영체제 프로그램
-유틸리티 프로그램을 디스크에 두고 필요할때만 잠시 주기억 장치로 넣어 실행시킨 후 다시 디스크로 보냄으로써 주기억 장치의 공간을 확보할 수 있다.

펌웨어(Firmware)
-커널 중에서도 좀 더 빠른 실행이 요규되거나 높은 수준의 보호가 필요한 프로그램들은 아예 마이크로-프로그래밍을 하여 ROM이나 PLA와 같은 칩의 형태로 만들어 놓는것을 말한다.

듀얼모드란?

프로그램은 유저모드와 커널 모드 중 하나의 모드에서만 실행되도록 하는것. 즉, 사용자와 운영체제 프로그램 간에 설정된 영역을 꼭 보호되어야 하기 때문에 사용함

polling VS Interrupt

polling는 CPU가 일정한 시간 간격을 두고 자원들의 상태를 주기적으로 확인하는 방식
Interrupt는 각 자원들이 능동적으로 자신의 상태변화를 CPU에게 알리는 방식 -> 자원들의 상황이 발생하면 즉시 알려 처리 받을 수 있어서 폴링보다 효과적임

  1. Interrupt의 동작방식
  • CPU가 명령어를 실행중이었다면 이 명령어를 먼저 실행을 완료시키고 인터럽트 신호를 확인
  • 현재 실행 중이던 프로그램이 인터럽트 처리 후 다시 실행될 대를 위해 현 상태의 정보를 시스템 스택에 저장
  • 인터럽트 처리
  • 이전에 저장하였던 값들을 다시 가져오고 이전에 실행중이던 프로그램을 다시 실행한다.

기억 장치의 계층 구조


계층적 구조의 설계는 계층 간에 데이터가 이동되는데 드는 부담을 동반하게 되지만 상위계층의 접근을 통해 얻게 되는 처리 시간의 절약이 이 부담을 충분히 보상한다면 매력적인 방법이 된다.


알고리즘

셸 정렬 : 정렬할 배열의 요소를 그룹으로 나눠 각 그룹별로 단순 삽입 정렬을 수행하고, 그 그룹을 합치면서 정렬을 반복하여 요소의 이동 횟수를 줄이는 방법

셸 정렬 과정에서 수행하는 각각의 정렬을 'h-정렬'이라고 한다.

    static void shellSort(int[] a, int n){ //n은 요소개수
        for(int h = n/2; h > 0; h /= 2) {   //Outer Loop는 h-정렬 결정 //2
            for(int i=h; i<n; i++) { //비교할 오른쪽의 인덱스값 결정 2.3.4.5.6.7 //단순 선택 정렬
                int j;
                int tmp = a[i]; //오른쪽 인덱스의 값 저장 2
                for(j = i-h;  j>=0 && a[j] > tmp; j -= h){ //tmp값이 비교대상인 a[j]보다작을경우 교환
                    a[j+h] = a[j];
                }
                a[j+h] = tmp;
            }
        }
    }

알고리즘 처음 정렬 나왔을때 이게 뭐야 했는데 이제야 뭔가 조금이라도 보인다.. 역시 익숙해져야 하나보다. 그리고 outer loop는 무슨일을 하는지 inner loop는 무슨일을 하는지 생각하면서 봤더니 좀 더 잘보이는거같다.

profile
안녕하세요

0개의 댓글