본문 바로가기

전체 글

(94)
운영체제 정리 기록 -2 The Abstraction : The Process * CPU 가상화 CPU가상화는 웹 어플리케이션들이 마치 자신 혼자 CPU를 독점하는 것 같은 illusion을 주어야한다. 이러한 환상은 time sharing, context switch, 스케쥴링 정책에 의해 가능하다. * 프로세스 프로세스란 실행중인 프로그램의 인스턴스이다. 즉 프로그램이 실행되면 데이터는 메모리에, 명령들 즉 코드들은 CPU에 적재 되는데 그렇게 실행된 것을 프로세스라고 한다. 프로그램은 명령들과 데이터의 집합이다. 프로세스의 핵심으로는 Machine State가 있는데, 이는 메모리와 레지스터 등으로 이루어진다. * 프로세스 API 프로세스 API는 프로세스 관련 함수로, 운영체제가 반드시 제공해야하는 기능이다. Create..
운영체제 정리 기록 - 1 1. OS Concepts - 가상화(추상화), 동시성, 영속성 - 운영체제 responsible for : 프로그램 실행을 쉽게. 프로그램들에게 메모리 공유, 프로그램들과 장치 interact. 즉, 컴퓨터 동작을 옳바르고 효율적이게 만든다 - 가상화(추상화) : 물리적 자원(메모리, 프로세서, 디스크 등)를 가상적 형태로 변환해서 application에게 제공. 가상화하는 것이 제너럴하고 강력하며 사용하기 쉽다. - 시스템콜 : 유저모드 응용프로그램이 커널 모드 기능 사용. 예 ; 프로그램 실행, 메모리 접근, 장치 접근 등. OS의 자원관리자 역할. 프로그램들이 자신 혼자 CPU를 독점하는 것 처럼 느끼게 하는 것 -> CPU 가상화 주소공간과 물리적 메모리를 연결. 물리 메모리는 바이트들의 배열...
CORS가 무엇인가. CORS 는 cross origin resource sharing 즉 url이 다른 출처간 자원 공유이다. 이게 왜 만들어 졌는가? 하면은 사실 우리를 도와주는 것이다. 원래 브라우저는 보안상 다른 url웹 사이트 간 자원 공유를 금지시켰다. 이는 SOP 즉 same origin policy 동일한 서버간 에만 자원요청을 주고 받을 수있다. 왜냐면 악성 사이트가 자바스크립트 파일을 보내서 내 브라우저에 저장된 토큰 또는 쿠키가지고 해당 서버에 무슨 일을 시킬지 모른다. 그렇기에 교차출처는 보안상 매우 위험한 일이었다. 허나 네이버 지도 카카오 지도 등 API를 따와야만 하는 일을 겪어보고 또는 다른 앱 웹에서 사용해보았을 것이다. 이 때문에 CORS가 허용해준다. 이는 어떻게 이루어지냐? 브라우저는 다른..
web server architecture : 웹 서버, 웹어플리케이션 서버 web server architecture 웹서버 웹어플리케이션서버 DB 웹서버는 대표적으로 아파치, nginx가 있는데 클라이언트에서 요청을 받고 정적 페이지라면 직접 처리를 또는 동적 페이지라면 웹 어플리케이션 서버에 보낸다. 또한 웹 어플리케이션에서 받은 데이터를 클라이언트에 다시보내는 역할도 한다. 물론 웹 서버가 직접 동적 페이지 요청을 처리할때도 있다. php와 함께 이용해 요청을 처리 할 순 있지만 보통 그러하진 않는다. 그 이유는 왜냐? 예전에는 속도를 꼽곤했지만 현재는 유의미한 차이는 아니다. 진짜 이유는 웹 서버는 그 외에도 역할이 많다. 먼저 웹 서버는 리버스 프록시 기능을 한다. 프록시 자체는 많이 들어 보았을 것이다. 다른 네트워크에 접속할때 보안등의 이유로 직접이 아닌 중계 서버..
세션 쿠키 그리고 JWT 많은 서비스에서 지원하는 로그인과 로그아웃. 흔히 볼 수 있는 서비스이기에, 만만해보이지만 사실 쉽지않다는 걸 알고있습니다. 이를 위한 내용들을 포스팅해보고자 합니다. 먼저, 많이 들어본 Authentication 그리고 Authorization 한글로 하면 인증과 인가. 쉽게말하면 인증은 내가 내다 아이디와 패스워드를 통해 확인을 받는 것이고, 인가는 인증 '후' 인증받은 내용을 바탕으로 일련의 활동을 할 수 있는 이용권을 얻은 것. 조금 더 다듬어서 정리하자면, '로그인이 유지되는 상태에서 일어나는 일들' 이다. 그럼 이제 이 인증 후 서버가 알게 된 아이디와 패스워드를 항상 클라이언트와 서버가 주고 받는 것이냐? 그것은 아니다. 이는 잠깐 생각해도 보안상 취약점 있을 것이라고 알 수 있다. 중간에 ..
인터넷 계층, 데이터링크 계층을 처리하는 기기 인터넷 계층을 처리하는 기기 라우터, L3 스위치 라우터는 다른 네트워크 간 데이터를 주고 받을 때, 패킷 소모를 최소화 하고 경로를 최적화하는 라우팅을 하는 장비입니다. L3 스위치를 라우터라고 봐도 무방한데, 좀 더 자세히는 보통 라우터가 소프트웨어 기반과 하드웨어 기반 라우터가 있는데, 하드웨어 기반 라우팅을 담당하는 라우터를 L3스위치라고 보면 된다. 그 외 데이터 링크 계층을 처리하는 L2 스위치도 있는데 비교하자면, 짧게 설명하자면 L2스위치는 연결 장치로 부터 패킷이 왔을때 패킷 전송을 담당합니다. L2스위치 L3스위치(라우터) MAC주소를 활용해 패킷 전달 IP주소를 활용해 패킷 전달 이더넷 프레임전송 IP패킷 전송 MAC주소 테이블 참조 라우팅 테이블 참조 높은 패킷 여과율과 전달율 패킷..
async 콘솔에 찍어본 기록 그냥 소소한 정리이다. 눈으로 확인해본 기록. async function f() { console.log("async function f 시작"); let promise = new Promise((resolve, reject) => { setTimeout(() => resolve("완료!"), 1000) }); let result = await promise; // 프라미스가 이행될 때까지 기다림 (*) console.log("await이후의 function f"); console.log(result); // "완료!" } async function a(){ console.log("async function a 시작"); } f(); a(); async함수 내의 await을 만나면 프라미스가 처리되길 기..
PS속 스프레드 문법과 Rest문법 분석 과정 function solution(land) { lengthFourArray = Array(4).fill(0).map((cur, idx) => cur + idx); lengthLandArray = Array(land.length).fill(0).map((cur,idx) => cur + idx); for (let land_height_idx of lengthLandArray){ if (land_height_idx === 0) continue; for (let land_weight_idx in lengthFourArray){ let maxValue = 0; for (let idx of lengthFourArray){ if (land_weight_idx != idx){ if (maxValue < land[lan..