일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 배열
- RT scheduling
- Machine Learning
- C
- 연결리스트
- 이진탐색
- 포인터
- 해시테이블
- 큐
- 자료구조
- 연결 리스트
- APOLLO
- pytorch
- RxJS
- alexnet
- 타입스크립트
- 코딩테스트
- 알고리즘
- vue3
- 프로세스
- 프로그래머스
- 자바스크립트
- GraphQL
- 릿코드
- 프론트엔드
- 스택
- 브라우저
- cors
- 웹팩
- 컨테이너
- Today
- Total
목록분류 전체보기 (164)
프린세스 다이어리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MT675/btrgCGfcCyO/SeMqUgdoSePMBKBCCUgosk/img.png)
1. 프로세스 상태 초기 컴퓨터에서 한정된 컴퓨팅 자원으로 여러 프로그래밍을 동시에 실행하(는 것처럼 보이)고 싶어 CPU가 여러 프로세스를 바꿔치기하면서 그때그때 적당한 프로세스를 실행하게 했고 그걸 가능하게 한 것이 스케줄러다. 간단한 키보드 입력 같은 경우에는 바로 실행이 끝나지만, 프로세스 도중에 파일을 읽고 출력을 해야 하는 프로그램이 있다면, 저장매체에서 파일을 읽어와서 다시 돌아오는 도중에는 프로세스가 wait 상태로 실행하지 않는 상태다. 미리 CPU가 파악을 하고 있어야 프로세스가 멈춘 상태일 때 대기 중인 상태의 다른 프로세스를 먼저 실행시킬지 판단할 수 있다. 프로세스 상태에 대해 좀 더 알아보자. 1. 프로세스 생성(new) - 생성중인 프로세스 2. 실행 가능(ready) - CP..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b9NHh4/btrgD2Pca1i/ws6kMl8gEN5LIGkbFGDkDK/img.png)
1. 프로세스, 스케줄러란? 프로세스란 실행 중인 프로그램으로 작업, 태스크, 잡이라는 말과 혼용이 된다. 폰 노이만 구조에 따라, 모든 프로그램의 코드는 먼저 메모리에 들어간 후 실행이 되어야 하고, CPU가 프로세스를 실행해 준다. 프로그램을 짤 때, 매끄러운 사용자 경험을 전달하기 위해서는 프로세스 실행에 필요한 자원들을 효율적으로 다루어야 하는데, 그걸 도와주는 게 바로 스케줄러(scheduler)다. 스케줄링이란, 프로세스를 어느 순서대로 실행할지 판단하는 일종의 계획이다. 프로그램이 실행되면 코드는 메모리에 들어가고, CPU에서 코드를 한 줄씩 읽으면서 프로세스를 실행하는데, CPU 자원은 한정되어 있고, 사람들은 여러 프로그램을 동시에 이용하길 원한다. 여러 프로세스 실행을 관리하기 위해 어..
1. 메모리 누수란? 메모리가 할당(allocated)된 상태에서, 프로그램의 어디에서도 참조(used)되지 않는데도 방출(release)되지 않은 상태로 계속 누적이 되면, 메모리 내에 프로세스 무게가 계속 더해져서 프로그램이 갑자기 종료되거나 멈춰버리는 주요한 원인이 된다. 자바스크립트에서는 기본적으로 가비지 콜렉터 기능을 가지고 있어, 프로그래머가 모든 변수를 필요 없어질 때마다 메모리 해제해 줘야 하는 부담은 덜었다. 하지만 애플리케이션이 복잡해지고 특정 라이브러리 또는 로직을 사용하여 코드를 짰을 때 의도대로 메모리가 정리되지 않고 지속적으로 쌓여 프로그램 성능이 저하될 가능성이 생긴다. 자바스크립트에서 대표적으로 메모리 누수를 막기 위해 어떤 방법을 사용할 수 있는지 정리해보았다. 2. 메모리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/s9RNc/btrgB4s2VXW/PvghaPlqrOrCSE8NjP9oE0/img.png)
1. 가비지가 무엇이고, 왜 가비지 컬렉터가 필요한가요? 가비지 콜렉터(Garbage Collector)는 애플리케이션이 실행될 때, 메모리에 저장은 되어 있지만 어디에서도 사용되지 않는 변수를 알아서 메모리에서 치워 주는 관리 방법이다. 제대로 이해하기 위해서는 먼저 가비지, 즉 쓰레기 메모리가 무엇이고 왜 생기는지를 알아야 한다. 이전에 업로드한 동적 메모리 할당의 개념을 정리한 글과 내용이 일부 중복되어 있다. 일반적으로 C에서 배열을 선언할 때, 사전에 적절한 크기만큼 할당해 준다. int a[20] = "hello world"; 그런데 항상 사전에 메모리를 할당해주는 게 아니라, 프로그램 실행 도중에 필요시 메모리를 할당해야 할 때가 있다. C에서는 malloc() 함수를 사용해, 원하는 만큼의..
1. 파일 입출력의 필요성 프로그램이 꺼진 이후에도 데이터를 저장하기 위해서는 파일 입출력이 필요하다. 예를 들어, 게임을 껐다 켰는데 다시 캐릭터를 처음부터 만들어야 한다면 시간 버린 느낌이 들 것이다. 즉, 어떠한 데이터를 프로그램 안에서만 사용하는 게 아니라, 프로그램의 외부에 일시적으로 저장을 해 놨다가 프로그램을 다시 실행시킬 때 다시 불러올 수 있도록 하는 역할을 한다. 흔히 SSD, RAM, CPU는 일반적으로 컴퓨터에 들어가는 부품이다. 이 중 파일이 실질적으로 저장이 되는 위치를 고르라면, 바로 SSD다. 컴퓨터 아키텍처마다 조금씩 차이는 있겠지만 램과 CPU는 휘발성이 있다는 특징이 있다. 그래서 바탕화면 등에 있는 파일은 SSD와 같은 보조기억장치에 저장되고, 그것을 더블클릭해서 실행..
1. 구조체란 여러 개의 변수를 묶어서 하나의 객체를 표현하고자 할 때 구조체를 사용할 수 있다. 배열과 달리, 서로 다른 특성을 같이 묶어서 객체의 성격을 표현하는 것이다. 캐릭터, 몬스터, 좌표 등 다양한 객체를 모두 정의할 수 있다. 구조체는 다음과 같이 선언할 수 있다. struct 구조체명 { 자료형1 변수명1; 자료형2 변수명2; } 2. 구조체의 정의 방법 한 명의 학생에 대한 정보를 담고 있는 구조체를 만들어 본다면 다음과 같다. #include struct Student { char studentId[10]; char name[10]; int grade; char major[100]; }; 위와 같이 프로그램에서 요구하는 특성에 맞게 객체의 특성을 정의할 수 있다. int main(voi..
1. 함수 포인터란 함수 또한 다른 자료형처럼 포인터 주소를 가진다. 배열의 이름이 메모리 주소를 반환하는 것처럼, 함수의 이름도 내부적으로 컴퓨터 메모리에 기록이 된다. 함수 포인터는 특정한 함수의 반환 자료형을 지정하는 방식으로 선언할 수 있다. 함수 포인터를 하나 만들어서, 특정한 함수 자체를 가리키도록 할 수 있다. 반환 자료형과 매개변수는 해당 함수가 가지고 있던 것으로 가져와야 한다. 반환 자료형(*함수 포인터 이름)(매개변수) = 함수명; #include void func() { printf("yess"); } int main(void) { printf("%p \n", func); } 0x100417f40 이렇게 간단한 함수를 만들고, 함수의 이름을 넣어서 출력하도록 만들면 반환되는 값으로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biOlVc/btrfKArBRBi/pKgKku9nrsKGSrJRUnpi70/img.png)
1. 동적 메모리 할당의 개념과, 함수 malloc() 일반적으로는 C에서 배열을 선언할 때 사전에 적절한 크기만큼 할당해주어야 한다. int a[20] = "hello world"; 그런데 항상 사전에 메모리를 할당하는 게 아니라, 프로그램 실행 도중에 필요할 때 메모리를 할당해야 할 때가 있을 것이다. 그 경우에 동적 메모리 할당을 사용해야 한다. C에서는 malloc() 함수를 이용해 원하는 만큼의 메모리 공간을 확보할 수 있다. 포인터 = malloc(할당할 바이트 크기); Memory allocation의 약자인 malloc 함수는 메모리 할당에 성공하면 주소를 반환하고, 그렇지 않으면 null을 반환한다. 현재 컴퓨터의 메인 메모리, 즉 램을 확인한 다음, 거기서 현재 할당하고자 하는 메모리를..