[인프런 기술노트] 동기식 비동기식의 동작 방식 차이
2023. 2. 19. 02:24
Study/컴퓨터구조 | 운영체제
동기 VS 비동기 동기 코드의 실행이 끝난 후에 다음 코드를 실행한다. (순차적 실행 보장) 비동기 코드의 실행 종료를 기다리지 않고 다음 코드로 넘어간다. 동기식 코드는 다음 코드에 현재 코드의 결과가 필요한 경우에 사용 비동기식 코드는 주로 시간이 오래 걸리는 네트워크 통신이나 코드의 실행 결과가 당장 필요하지 않은 경우에 사용 비동기식 함수의 경우 함수의 종료를 기다리지 않고 다음 코드로 넘어가는데, 그렇다면 함수의 실행 결과를 어떻게 받을까? 이때 callback(콜백) 함수를 사용한다. 비동기식 함수 내부에 콜백 함수를 사용해서 함수의 실행이 끝날 경우 마지막에 콜백 함수를 호출하여 결과값을 받아오게 된다.
[인프런 기술노트] 운영체제 설명 - 여러 프로그램이 동시에 실행되는 원리
2023. 2. 19. 02:16
Study/컴퓨터구조 | 운영체제
컴퓨터 구조 1. 디스크에서 프로그램의 일부를 메모리에 올림(프로세스). 2. 프로세스는 명령어의 집합이고 명령어의 일부를 cache에 적재. 3. CPU는 cahce에서 처리해야 할 명령어를 가져온 후 ALU에서 하나씩 연산. 기본적으로 CPU는 한 번에 하나의 연산만 할 수 있다. 그렇다면 동시에 여러 프로그램을 어떻게 실행시킬까? 시분할 방법은 시분할이다. 약간의 눈속임인데, CPU의 시간을 분할하여 처리해야 하는 프로세스들에게 나눠주는 거다. 즉 여러 프로세스를 번걸아가면서 조금씩 처리하는 거라고 보면 된다. 운영체제 책을 보면 이런 식의 그림을 볼 수 있을텐데, 프로세스 A, B, C, D가 있다고 하자. 각각의 프로세스가 모두 처리되려면 각각 3/4초, 1/4초, 1초, 1/2초가 필요하다. ..
[인프런 기술노트] CPU속도가 Hz(헤르쯔)인 진짜 이유 (feat. 컴퓨터 구조)
2023. 2. 19. 01:55
Study/컴퓨터구조 | 운영체제
왜 CPU 속도는 Hz 단위일까? 우리들은 보통 메인 메모리와 하드 디스크는 용량을 따지는 반면 CPU는 속도를 따진다. 그만큼 CPU의 속도는 중요하기 때문! 그렇다면 CPU의 속도에 왜 Hz 단위를 사용할까? Hz는 진동수를 표현하는 단위다.1Hz라면 1초에 1번 진동하고, 10Hz라면 1초에 10번 진동한다는 뜻.여기서 진동은 주기(Cycle)가 존재하는데, 이 주기가 CPU의 속도에 Hz 단위를 쓰는 것과 관련이 있다. 컴퓨터에서 처리해야 할 명령어의 흐름은 알다시피 디스크 → 메모리 → (cache) → CPU 순이다. 여기서 cache에서 CPU로 명령어를 가져오려면 전기적 신호가 필요한데 이 전기적 신호가 바로 Clock(클럭)이다. 이때 한 클럭마다 명령어를 주기적으로 가져온다고 해서 Hz..
[인프런 기술노트] 컴퓨터 전공 수업 10분으로 압축 (컴퓨터 구조 + 운영 체제)
2023. 2. 17. 01:53
Study/컴퓨터구조 | 운영체제
폰 노이만 구조 현재 일반적으로 쓰이고 있는 컴퓨터 구조로 주기억 장치, 중앙 처리 장치, 입출력 장치 3가지로 구성된다. 예전엔 새로운 프로그램을 처리하려면 CPU 회로를 다시 구성해야 했다. 하지만 지금은 프로그램을 주기억장치에 저장했다가 CPU가 명령어를 해석하여 처리하고 있다. (컴퓨터에서 일반적인 데이터의 흐름은 디스크 → 메모리(주기억장치) → CPU) 컴퓨터에서 데이터를 처리하기 위해서는 디스크에 접근해야 한다. 이때 CPU의 데이터 연산 속도는 매우 빠르지만 하드디스크의 데이터 접근 속도는 매우 느리다. 때문에 CPU가 연산을 먼저 끝내고 디스크를 기다리는 시간이 발생할 수 있다. CPU가 쉬는만큼 데이터 처리에 손실이 생기기 때문에 두 장치 사이의 속도 차이를 극복할 수 있는 무언가가 필..
[네트워크] 1장 컴퓨터 네트워크와 인터넷
2022. 10. 11. 16:39
Study/컴퓨터 네트워크
인터넷이란 무엇인가? 구성요소로 본 인터넷 오늘날 네트워크에 연결되는 모든 장치를 호스트(host) 또는 종단 시스템(end system)이라고 부른다. 종단 시스템은 통신 링크(communication link)와 패킷 스위치(packet switch)의 네트워크로 연결된다. => 통신 링크는 동축케이블, 구리선, 광케이블, 라디오 스펙트럼을 포함한 다양한 물리 매체로 구성 각각의 링크들은 다양한 전송률(transmission rate, 링크 대역폭)을 이용하여 데이터를 전송하며 전송률은 초당 비트 수를 의미하는 bps(bit per second) 단위를 사용한다. 종단 시스템이 다른 종단 시스템으로 보낼 데이터를 갖고 있을 때, 송신 종단 시스템은 그 데이터를 세그먼트(segment)로 나누고 각 세..
[suninatas] Game 22
2022. 5. 24. 21:30
Study/Web Hacking
문제: http://suninatas.com/challenge/web22/web22.asp Game 22는 Blind SQL Injection 문제다. form 아래에 필터링되고 있는 키워드를 보여주고 있다. 이 외에도 #, like, % 등등 아래 키워드에는 없지만 필터링되고 있는 것들도 있었다. 최종적으로 =, and, --, ' 정도가 필터링되지 않는 것을 확인했다. 해당 문제에 대한 힌트가 있지 않을까 싶어 개발자 도구를 열어봤는데 역시나 주석에 힌트가 숨겨져 있었다. admin의 pw를 구해야 한다고 한다. 이전에 비슷한 문제를 풀어봤었는데 그때랑 동일한 방법으로 해결해보겠다. 먼저 pw의 길이를 알아야 한다. 아래 코드로 pw의 길이를 알아낼 수 있다. import requests url = ..
[suninatas] Game 08
2022. 5. 24. 21:30
Study/Web Hacking
문제: http://suninatas.com/challenge/web08/web08.asp 로그인 폼이 하나있다. Password Incorrect!라고 되어 있는데 왠지 password를 구해야 하는 문제 같다. 개발자 도구를 열어보면 주석에 힌트가 숨겨져 있는 것을 볼 수 있다. 예상대로 admin의 password를 찾아서 로그인해야 하는 문제다. 주석에 친절하게도 비밀번호의 범위를 보여주고 있다. 여기서 브루트 포스로 해결할 수 있는 문제라는 것을 알 수 있다. 코드를 작성해서 password를 구했다. import requests url = "http://suninatas.com/challenge/web08/web08.asp" data = {"id": "admin"} for i in range(..
[suninatas] Game 07
2022. 5. 16. 22:55
Study/Web Hacking
문제: http://suninatas.com/challenge/web07/web07.asp Do U Like girls?라는 문구가 눈에 띈다. 문제 페이지에 아이유 사진과 아래에 있어 잘 보이진 않지만 윤아 사진, 그리고 그 사이에 YES버튼이 하나 있다. YES버튼을 눌러봤다. 내가 너무 느리다고 한다. 느리다는 게 무얼 말하는 걸까.... 개발자 도구를 열어봤다. 주석에 힌트가 숨겨져있었다. Faster and Faster가 힌트였다. 위에서 내가 너무 느리다는 경고창은 정말 내가 너무 느리다는 걸 뜻하는 거였다... 어떻게하면 form을 빨리 submit할 수 있을까? submit 버튼은 너무 아래쪽에 있기 때문에 버튼을 클릭하는 방법은 사용할 수 없다. 대신에 자바스크립트를 사용해서 form을 ..
[suninatas] Game 06
2022. 5. 16. 21:52
Study/Web Hacking
문제: http://suninatas.com/challenge/web06/web06.asp board에 5개의 글이 있다. 가장 먼저 Hint를 보자. suninatas의 글을 읽어보라고 되어 있다. Writer가 suninatas인 작성글을 확인해보자. password를 입력하는 input과 그 아래에 DB문법으로 작성된 쿼리가 있다. 이걸보니 Blind SQL Injection이 생각났다. Blind SQL Injection은 쿼리의 참과 거짓의 판별을 통해 원하는 결과를 도출해내는 공격 방법이다. 일반적으로 사용하는 여기서 우리가 입력하는 내용이 pwd에 들어가게 될 듯하다. 그 점을 고려해서 제일 흔하게 쓰이는 ' or 1=1#을 입력해봤다. 해당 쿼리는 못 쓰게 막혀있다. 아마 쿼리를 이루는 문..