[Week 02] 서버 프로그래밍 A 1주차
by J4BEZ프로그램 vs 프로세스
프로그램이 메모리에 로드 되는 순간 프로세스가 됨
프로그램 실제로 CPU나 메모리에 로드될 수 있는 데이터 형식들의 코드들을 의미하며
프로세서는 OS에 의해 관리받을 수 있는 실행 단위
왜 OS에서 프로세스 간 메모리(리소스) 공동 활용을 막았을까?!
왜 독립된 메모리 공간 안에서 동작하게 하였을까?!
서로 같은 리소스를 활용하게 되면 한 프로세스에서 일어난 수정 이나 변경 사항이
다른 프로세스에도 영향을 미치게 되어 문제가 발생하게 됨
단, 한 프로세스 안에 있는 '스레드'들 사이에선 서로 메모리 공간 공유가 가능함
그러나 '순서'가 중요한 경우 '스레드'는 사용하기 어려움
Inmemory DB => RAM에 DB를 다 올려서 극단적으로 속도를 올리는 기법(대신 돈이 많아야함)
가상 메모리: 느리지만, 시스템의 물리적인 메모리(외부기억장치 HDD/SSD)를 가상 공간으로 프로세스에게 제공
Stack:: Last In First Out 가장 나중에 들어간 데이터가 가장 먼저 해제됨
정상적인 괄호문자열인지 확인하기 위하여 사용
Queue:: First In First Out
버퍼의 속도제어
스레드의 갯수와 속도는 비례하지 않는다.
소수 찾기 Thread 없이
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <chrono>
using namespace std;
const int MaxCount = 150000;
bool IsPrimeNumber(int number)
{
if (number == 1)
return false;
if (number == 2 || number == 3)
return true;
for (int i = 2; i < number - 1; i++)
{
if ((number % i) == 0)
return false;
}
return true;
}
void PrintNumbers(const vector<int>& primes)
{
for (int v : primes)
{
cout << v << endl;
}
}
int main()
{
vector<int> primes;
auto t0 = chrono::system_clock::now();
for (int i = 1; i <= MaxCount; i++)
{
if (IsPrimeNumber(i))
{
primes.push_back(i);
}
}
auto t1 = chrono::system_clock::now();
auto duration = chrono::duration_cast<chrono::milliseconds>(t1 - t0).count();
cout << "Took " << duration << " milliseconds." << endl;
// PrintNumbers(primes); 실제로 소수를 출력하면 이 함수의 주석을 해제하세요.
return 0;
}
블로그의 정보
작은 고양이의 캣 타워
J4BEZ