컴퓨터 시스템의 구성

OS 2015. 12. 26. 18:39

소프트웨어는 시스템호출(system call 또는, 모니터 호출)이라 불리는 특별한 연산을 실행하여 인터럽트를 발생시킬 수 있다.

메모리 장치는 단지 일련의 메모리 주소만을 인식한다.

 

반도체 디스크(solid state disk) 위의 저장 시스템은 휘발성이다.

 

인터럽트 구동 방식의 입출력 : 디스크 입출력과 같은 대량의 데이터를 전송하는 데에는 높은 오버헤드 초래

해결? 직접 메모리 접근(Direct Memory Access, DMA) 장치 사용

 

 

대칭적 다중 처리(Symmetric MultiProcessing, SMP) : 가장 일반적인 다중 처리기 시스템

 

그림(SMP)에서 각 처리기가 자신의 레지스터 집합과 로컬 캐시를 갖는다. 하지만 모든 처리기는 메모리를 공유한다.

'OS' 카테고리의 다른 글

interrupt, trap, exception에 대한 간단 명료 정의  (0) 2016.03.22
CPU 스케줄링  (0) 2016.01.19
Posted by 知彼知己百戰不殆
,

Romberg법

언어/Coding 2015. 12. 22. 02:52

#include <stdio.h>

#include <stdlib.h>

#define _USE_MATH_DEFINES

#include <math.h>

#define f(x) log10(1+x)*sin(10*x) //함수 나중에 바꿔줘야 함

double T[20],R[20][20],h[20],a,b;

int n;


int main() {

        double sum;

        int i,k,j;

        printf("구간 값 a(적분 밑에 있는 값):");        scanf("%lf",&a);

        //printf("구간 값 b:"); //scanf("%lf",&b);

        b=2*M_PI;

        //printf("b:%lf\n",b);

        printf("구하고자 하는 R(n,n)에서의 n : ");      scanf("%d",&n);


        h[1]=b-a;

        printf("h[1]:%lf\n",h[1]);

        printf("f(b):%lf\n",f(b));

        printf("log(1+2PI):%lf\n",log(1+b));

        T[1]=h[1]/2*(f(a)+f(b));

        printf("T[1]:%lf\n",T[1]);

        R[1][1]=T[1];

        printf("R[1][1]:%lf\n",R[1][1]);

        for(i=2;i<=n;i++)

        {

                h[i]=h[i-1]*0.5;

                printf("h[%d]:%lf\n",i,h[i]);

                sum=0;

                for(k=1;k<=pow(2,i-2);k++)

                {

                        sum=sum+f(a+(2*k-1)*h[i]);

                }

                T[i]=0.5*T[i-1]+h[i]*sum;

                printf("T[%d]:%lf\n",i,T[i]);

R[i][1]=T[i];

                //printf("R[%d][1]:%lf\n",i,R[i][1]);

                for(j=2;j<=i;j++)

                {

                        R[i][j]=((pow(4,j-1)*R[i][j-1])-R[i-1][j-1])/(pow(4,j-1)-1);

                        //printf("first:%lf\n",pow(4,j-1)*R[i][j-1]);

                        //printf("second:%lf\n",R[i-1][j-1]);

                        //printf("pow(4,j-1):%lf\n",pow(4,j-1)-1);

                        //printf("R[%d][%d]:%lf\n",i,j,R[i][j]);

                }

                //printf("h[3]:%lf\t R[3][1]:%lf\n",h[3],R[3][1]);

        }

        printf("R11:%lf\n",R[1][1]);

        printf("R31:%lf\t R21:%lf\n",R[3][1],R[2][1]);

        printf("R32:%lf \t R22:%lf\n",R[3][2],R[2][2]);

        printf("n값에서의 R[n][n]:%lf\n",R[n][n]);

}



'언어 > Coding' 카테고리의 다른 글

할선법  (0) 2015.12.22
가상 위치법  (0) 2015.12.22
simpson 1/3 공식  (0) 2015.12.22
거듭제곱  (0) 2015.12.22
역 거듭제곱  (0) 2015.12.22
Posted by 知彼知己百戰不殆
,

할선법

언어/Coding 2015. 12. 22. 02:52

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define e 2.71

double f(double num1) {

 double num2;

 num2=pow(num1,3)-2*sin(num1);

 return num2;

} //definition of f(x)


int main() {

 double x0, x1,xc,n1,n2,n3;

 printf("x0값 입력:");

 scanf("%lf", &x0);

 printf("\n\n x1값 입력:");

 scanf("%lf", &x1);


 for (int i = 0; i < 6; i++) {

  n1 = f(x1)*(x0 - x1);

  printf("n1값:%lf\n", n1);

  n2 = f(x0) - f(x1);

  printf("n2값:%lf\n", n2);

  n3 = n1 / n2;

  xc = x1 - n3;

  printf("\nXc의 값은: %lf\n", xc);

  printf("f(Xc)의 값은: %lf\n",f(xc));

  x0 = x1;

  //printf("Xc의 값:%lf", xc);

  x1 = xc;

 }

}



'언어 > Coding' 카테고리의 다른 글

Romberg법  (0) 2015.12.22
가상 위치법  (0) 2015.12.22
simpson 1/3 공식  (0) 2015.12.22
거듭제곱  (0) 2015.12.22
역 거듭제곱  (0) 2015.12.22
Posted by 知彼知己百戰不殆
,