国产成人v爽在线免播放观看,日韩欧美色,久久99国产精品久久99软件,亚洲综合色网站,国产欧美日韩中文久久,色99在线,亚洲伦理一区二区

學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > linux修改共享內(nèi)存命令

linux修改共享內(nèi)存命令

時間: 佳洲1085 分享

linux修改共享內(nèi)存命令

  一般的以為修改系統(tǒng)共享內(nèi)存需要修改內(nèi)核程序,然后make,很麻煩。下面由學(xué)習(xí)啦小編為大家整理了簡單的linux修改共享內(nèi)存的命令的相關(guān)知識,希望大家喜歡!

  linux修改共享內(nèi)存的命令和方法

  其實,只要在rc.local的加入一點東西,就可以免去修改內(nèi)核的麻煩。修改方法如下:修改/etc/rc.d/rc.local文件。

  在文件的前面注釋的后面加入以下行:

  #修改內(nèi)核共享內(nèi)存大小;

  echo 134217728 > /proc/sys/kernel/shmmax;

  #說明:這里的值為內(nèi)存的一半;

  #如果系統(tǒng)內(nèi)存是256M,則值為134217728 ;

  #如果系統(tǒng)內(nèi)存是512M,則值為268435456;

  修改完成以后,重起機器就搞定。

  linxu默認情況下的共享內(nèi)存大小好像是32M,我的機器修改前用ipcs查看,oracle分段是10個,修改以后,只有1個。oracle在一個內(nèi)存分段內(nèi),使得數(shù)據(jù)交換的速度有所提高。

  擴展:linux如何實現(xiàn)共享內(nèi)存同步

  linux實現(xiàn)共享內(nèi)存方法一、利用POSIX有名信號燈實現(xiàn)共享內(nèi)存的同步

  有名信號量既可用于線程間的同步,又可用于進程間的同步。

  兩個進程,對同一個共享內(nèi)存讀寫,可利用有名信號量來進行同步。一個進程寫,另一個進程讀,利用兩個有名信號量semr, semw。semr信號量控制能否讀,初始化為0。 semw信號量控制能否寫,初始為1。

  讀共享內(nèi)存的程序示例代碼如下

  semr = sem_open("mysem_r", O_CREAT | O_RDWR , 0666, 0);

  if (semr == SEM_FAILED)

  {

  printf("errno=%d\n", errno);

  return -1;

  }

  semw = sem_open("mysem_w", O_CREAT | O_RDWR, 0666, 1);

  if (semw == SEM_FAILED)

  {

  printf("errno=%d\n", errno);

  return -1;

  }

  if ((shmid = shmget(key, MAXSIZE, 0666 | IPC_CREAT)) == -1)

  {

  perror("semget");

  exit(-1);

  }

  if ((shmadd = (char *)shmat(shmid, NULL, 0)) == (char *)(-1))

  {

  perror("shmat");

  exit(-1);

  }

  while (1)

  {

  em_wait(semr);

  printf("%s\n", shmadd);

  sem_post(semw);

  }

  寫共享內(nèi)存的程序示例代碼如下

  。。。。。。

  //同讀的程序

  while (1)

  {

  sem_wait(semw);

  printf(">");

  fgets(shmadd, MAXSIZE, stdin);

  sem_post(semr);

  }

  方法二、利用POSIX無名信號燈實現(xiàn)共享內(nèi)存的同步

  POSIX無名信號量是基于內(nèi)存的信號量,可以用于線程間同步也可以用于進程間同步。若實現(xiàn)進程間同步,需要在共享內(nèi)存中來創(chuàng)建無名信號量。

  因此,共享內(nèi)存需要定義以下的結(jié)構(gòu)體。

  typedef struct

  {

  sem_t semr;

  sem_t semw;

  char buf[MAXSIZE];

  }SHM;

  讀、寫程序流程如下圖所示。

  方法三、利用System V的信號燈實現(xiàn)共享內(nèi)存的同步

  System V的信號燈是一個或者多個信號燈的一個集合。其中的每一個都是單獨的計數(shù)信號燈。而Posix信號燈指的是單個計數(shù)信號燈

  System V 信號燈由內(nèi)核維護,主要函數(shù)semget,semop,semctl 。

  一個進程寫,另一個進程讀,信號燈集中有兩個信號燈,下標0代表能否讀,初始化為0。 下標1代表能否寫,初始為1。

  程序流程如下:

  寫的流程和前邊的類似。

  方法四、利用信號實現(xiàn)共享內(nèi)存的同步

  信號是在軟件層次上對中斷機制的一種模擬,是一種異步通信方式。利用信號也可以實現(xiàn)共享內(nèi)存的同步。

  思路:

  reader和writer通過信號通信必須獲取對方的進程號,可利用共享內(nèi)存保存雙方的進程號。

  reader和writer運行的順序不確定,可約定先運行的進程創(chuàng)建共享內(nèi)存并初始化。

  利用pause, kill, signal等函數(shù)可以實現(xiàn)該程序(流程和前邊類似)。

3596787