2022.8.30.화요일 TIL: 운영체제 챕터 6, 네트워크란, Nodejs 구현, map자료구조 & 알고리즘 문풀

Dorito·2022년 8월 30일
0

공부 기록

목록 보기
13/71
post-thumbnail

하루 개요

오전
운영체제 챕터 6 공부
네트워크 공부하기 (1강)
오후
자료구조 및 알고리즘 1문제 풀이
Node js 구현 (1-43 ~ 48)
저녁
자바스크립트 객체 ~ 클래스 개념 이해하기
Node js 구현 (챕터 2 시간 되는 만큼)
집에 가서 관계형 데이터 베이스 이론 책 읽기

운영체제 챕터 6: 교착 상태

쉽게 배우는 운영체제 개인 학습용입니다.

  • 연습문제
  1. 2개 이상의 프로세스가 서로의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 무엇이라 하는가?

    교착상태 p.293

  1. 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 나타내는 방향성이 있는 그래프를 무엇이라 하는가?

    자원할당 그래프 p.295

  1. 네가지 교착 상태 필요조건에 대해 설명하시오.

    원형 대기 점유와 대기를 하는 프로세스 간의 관계가 원 모양이여야 함
    상호배제 한 프로세스가 사용중인 자원은 다른 프로세스와 공유 불가
    비선점 한 프로세스가 사용중인 자원은 다른 프로세스가 빼앗을 수 없음
    점유와 대기 프로세스가 어떤 자원을 할당 받은 상태에서 다른 자원을 기다림
    p.297-298

  1. 교착 상태 해결 방법 중, 교착 상태를 유발하는 네 가지 조건을 무력화하는 방법은 무엇인가?

    교착상태 예방 p.302

  1. 교착 상태 해결 방법 중, 교착 상태가 발생하지 않는 수준으로 자원을 할당하는 방법은 무엇인가?

    교착상태 회피, 은행원 알고리즘 p.308

  1. 교착 상태 해결 방법 중, 자원 할당 그래프를 사용하여 교착 상태를 발견하는 방법은 무엇인가?

    무거운 교착상태 검출 p.312

  1. 교착 상태 해결 방법 중, 타임아웃을 이용하여 해결하는 방법은 무엇인가?

    가벼운 교착상태 검출 p.312

  1. 교착 상태 해결 방법 중, 은행원 알고리즘을 사용하여 해결하는 방법은 무엇인가?

    교착상태 회피 p.309

  1. 교착 상태 해결 방법 중, 모든 자원에 번호를 부여하고 낮은 번호의 자원을 사용할 수 없도록 하는 방법은 무엇인가?

    원형대기 예방 p.306

  1. 교착 상태 해결 방법 중, 프로세스가 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 자원을 모두 반납하는 방법은 무엇인가?

    점유와 대기 예방 p.304

  1. 교착 상태 해결 방법 중, 교착 상태가 검출되면 교착 상태를 일으킨 모든 프로세스를 종료하는 방법은 무엇인가?

    교착 상태 회복 p.317

  1. 자원 할당 그래프에서 무엇이 발견되면 교착 상태라고 판단 할 수 있는가?

    사이클 p.315

  • 심화문제
  1. 교착 상태 해결 방법 중 프로세스가 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 자원을 모두 반납하는 방법이 있다. 이 방법의 단점을 설명하시오.
    p.305
  2. 교착 상태 회피 방법인 은행원 알고리즘의 단점을 설명하시오.
    p.312
  3. 교착 상태 검출 시 타임아웃을 이용하는 방법의 장단점을 설명하시오.
    p.313

네트워크 공부

https://velog.io/@dorito/1.-네트워크란

Node js 구현 공부

1 - 43 App - 템플릿 기능 정리정돈하기 (객체 사용)

function templateHTML(title, list, body, control) {
  return `
    <!doctype html>
    <html>
        <head>
            <title>WEB1 - ${title}</title>
            <meta charset="utf-8">
        </head>
        <body>
            <h1><a href="/">WEB</a></h1>
            ${list}
            ${control}
            ${body}
        </body>
    </html>
    `;
}

function templateList(filelist) {
  let list = "<ul>";
  for (let i = 0; i < filelist.length; i++) {
    list = list + `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`;
  }
  list = list + "</ul>";
  return list;
}

이렇게 연관된 데이터나 함수는 객체로 묶어서 처리하는 것이 좋다.
template라는 객체 만들기

let template = {
  HTML: function (title, list, body, control) {
	// 함수 내용
  },

  list: function (filelist) {
	// 함수 내용
};
  • 함수 호출할 때
    templateHTML(title, list, body, control)
    -> template.HTML(title, list, body, control)
    templateList(filelist)
    -> template.list(filelist)로 가져옴

1 - 44, 45 Node.js - 모듈의 형식/활용

객체가 많아지면 모듈로 정리!!
모듈 만들어서 객체나 함수 묶고, 이를 파일로 분리해서 외부에 독립적으로 공유할 수 있다.

https://ko.javascript.info/modules
https://baeharam.netlify.app/posts/javascript/module

1 - 46 App - 입력 정보에 대한 보안

링크로 상위디렉터리나

path 모듈의 parse aptjem tkdydgotj ../password.js 경로를 보니 객체 출력
디렉터리 경로 .. 는 dir 프로퍼티
확장자 .js는 ext 프로퍼티로 분류

경로에서 파일명 password.js -> base 프로퍼티

let path = require('path');

추가해줌..

let filteredId = path.parse(queryData.id).base;
fs.readFile(
          `data/${filteredId}`,
          "utf8",
          function (err, description) 

url을 통해서 상위 디렉터리로 접근하려는 것을 막는다.

1 - 47 App - 출력 정보에 대한 보안

npm 모듈 사용
사용자가 입력한 정보를 웹으로 출력할 때 정보 필터링 (html 태그 이런거)

  • 오염된 정보를 출력

XSS: Cross - Site Scripting 약자

내용에

  • 필터링 방법
  1. 태그 자체를 필터링
  2. 해석하지 않고 그대로 출력하게 만들기 ->
    < (less than)= &lt;
    > (greater than) = &gt;
    => html entities 사용!,
    => 사이트를 오염시키는 데이터를 소독한다 = npm sanitize html 검색해보기! https://www.npmjs.com/package/sanitize-html

    npm, yarn 차이
    => https://seogeurim.tistory.com/12, [개발상식] npm과 yarn
    yarn은 페이스북에서 만든 자바스크립트 패키지 매니저.
    리액트(React)와 같은 프로젝트를 진행하며 겪었던 어려움을 해결하기 위해 개발되었고, npm과 같은 기능을 수행하나, npm 레지스트리와 호환하면서 속도나 안정성 측면에서 npm보다 향상되었다고 한다. 그러나!
    요즘은 압도적으로 성능차이가 나지는 않는다고 한다. 또 npm은 유저수가 넘사벽이라서 처음 만져볼 때 npm으로 시작하는 것도 나쁘지 않다고 함!

  • yarn 명령어
yarn init  // package.json 생성
yarn or yarn install // package.json 파일 및 해당 종속성에 나열된 모든 모듈을 설치
yarn add package_name@버전 // 특정 패키지의 특정 버전 설치
yarn add 주소 //특정 저장소 내 패키지 설치. 주로 github을 이와 같이 설치합니다.
yarn global add package_name // 옵션. 글로벌로 설치. 로컬의 다른 프로젝트도 이 패키지를 사용 가능하게 됩니다.
yarn remove // 패키지 삭제 명령어입니다.
yarn upgrade // 설치한 패키지들을 업데이트해줍니다.
npm dedupe // 중복 설치된 패키지들을 정리해주는 명령어입니다.
  • 모듈 불러옴
	// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
  let sanitizedTitle = sanitizeHtml(title);
  let sanitizedDescription = sanitizeHtml(description, {
            allowedTags: ['h1']
          });

챕터 1 마무리

  • 프레임워크
  • Node js 모듈
    모듈 북마크

https://whyprogrammer.tistory.com/467 이 사람이 그 내가 보는 강좌 잘 정리해둠

자료구조 Map & 알고리즘 문제 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/42578

맵 관련 공부 기록은 여기에서 볼 수 있다.

  const solution = (clothes) => {
  // map 구조에 집어넣는다
  let map = new Map();

  for (let [value, key] of clothes) {
    map.set(key, map.get(key) + 1 || 1);
    // map.set(key, value) – key를 이용해 value를 저장
    // or 연산자가 첫번째 true를 갖고 옴, 다 false면 마지막 값 가져옴
  }

  const totalCases = [...map.values()].reduce((acc, cur) => {
    return acc * (cur + 1);
  }, 1); // map은 iterable이므로 spread연산자 쓸 수 있다.

  return totalCases - 1;
};

솔루션.. 이 분 참고함

내일 다시 풀어야 함

뻘지식 리눅스 유닉스는 뭐고 맥os는 무슨 운영체제일까

https://velog.io/@dorito/리눅스-유닉스는-뭐고-맥os는-무슨-운영체제일까

하루 마무리

  • 하루 한 것 ❌ 🔺✅
    운영체제 챕터 6 공부 ✅
    네트워크 공부하기 (1강) ✅
    자료구조 및 알고리즘 1문제 풀이 ✅
    Node js 구현 (1-43 ~ 48) ✅
    집에 가서 관계형 데이터 베이스 이론 책 읽기 ✅
    자바스크립트 객체 ~ 클래스 개념 이해하기 ❌ (시간 부족)
    Node js 구현 (챕터 2 시간 되는 만큼) ❌ (시간 부족)
  • 잘한 것
    나름 기록을 잘 하고 있는 듯
    이해 안갔던 부분 다시 보니까 이해가 가서 좋다
  • 못한 것
    공부 밀도가 낮다는 불안감이 있다.
  • 피드백
    한시간씩 내가 뭘 했는지 기록을 해야겠음
  • 내일 할 것
    자바스크립트 객체 ~ 클래스, this 개념 이해하기
    코어 자바스크립트 책 완독하기 => 중요해보이는 부분 키워드 써두고 내일 공부 계획 짜기!
    Node js 구현 (챕터 2, mySQL)
    네트워크 공부하기 (2강) -> 만약 시간이 된다면 wireshark 함 써보기
    알고리즘 https://school.programmers.co.kr/learn/courses/30/lessons/42578 다시 풀기
    (만약 시간이 된다면) 자료구조 및 알고리즘 공부하기

0개의 댓글