当前位置: 首页 > news >正文

用iPhone做网站服务器互联网推广营销方案

用iPhone做网站服务器,互联网推广营销方案,wordpress seo 链接,wordpress有点尴尬诶该页无法显示1.prinf隐藏的缓冲区 1.思考:为什么会有缓冲区的存在? 2.演示及思考? 1).演示缓存区没有存在感 那为什么我们感觉不到缓冲区的存在呢?我们要打印东西直接就打印了呢? 我们用代码演示一下: 比如打开一个main.c,输入内容如下: #include <stdio.h>int main(){printf…

1.prinf隐藏的缓冲区

1.思考:为什么会有缓冲区的存在?

2.演示及思考?

1).演示缓存区没有存在感
那为什么我们感觉不到缓冲区的存在呢?我们要打印东西直接就打印了呢?
我们用代码演示一下:

比如打开一个main.c,输入内容如下:

 #include <stdio.h>int main(){printf("hello");}

我们运行的之后直接就打印了hello,好像没有感觉到缓冲区 的存在;
原因是因为此时程序已经结束了,它会刷新缓冲区的内容;

2)演示缓冲区的存在

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(){printf("hello");sleep(3);exit(0);
}

3.强制刷新
(1)方法一:遇到\n自动刷新
printf("hello\n");
(2)使用fflush刷新屏幕
fflush(stdout);

  1. _exit与exit

exit是先刷新缓冲区,然后再调用_exit(真正的退出);
_exit直接退出,不会刷新缓冲区;

比如如下的代码:

 #include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(){printf("hello");//fflush(stdout);sleep(3);_exit(0);//注意这里,不输出hello}

5.总结
printf将内容先写入到缓冲区中,缓冲区刷新到界面(屏幕)上的条件是:
(1)缓冲区放满
(2)缓冲区未满,强制刷新缓冲区到屏幕(方法一:\n;方法二:主动刷新:fflush(stdout));
(3)程序结束时,自动刷新缓冲区:exit方法;

6.为什么会有缓冲区的存在?

屏幕是一个硬件设备,是由操作系统来管理的,因此printf打印的时候需要调用操作系统的接口才能完成,这个时候我们需要从用户态切换到内核态,这个开销是比较大的.

2.fork复制进程  (重点)

1)shell:

在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

我们就是通过命令解释器(称为shell)(bash是命令解释器中的一种)和内核和系统进行交互的(Windows通过图形界面进行交互的);例如我们把ls交给bash,bash帮我们运行ls,然后把结果给用户;

2)fork如何复制进程?

fork是把已有的进程复制一份,当然把PCB也复制了一份,然后申请一个PID,子进程的PID=父进程的PID+1;

   如果父子进程想要做不同的事情,那么我们通过返回值来判断;
man fork

代码如下(代码下去自己练习,理解):

#include <stdio.h>
#include <unistd.h>
#include <assert.h>
#include <stdlib.h>int main()
{char *s=NULL;int n=0;//控制父子进程执行的次数;pid_t id=fork();assert(id!=-1);if(id==0)//子进程{s="child";n=3;}else//父进程{s="parent";n=7;}//父子进程int i=0;for(;i<n;i++){printf("s=%s\n",s);sleep(1);}exit(0);
}

父子进程是两个独立的进程,各自执行各自的代码;如果父子进程要做不一样的事情,就通过if  else返回值来操作;

3)fork的时机

fork产生的这个子进程不是从头开始执行的,而是从fork之后开始执行的,就是说fork下面的代码子进程才开始执行,具体的是说从返回值这里子进程开始执行,子进程不会再fork了,所以不会出现子进程再去fork产生一个子进程的问题.
也就是说:从返回值这里开始,父进程返回子进程的PID,子进程返回0;

4)getppid与getpid

getppid:得到一个进程的父进程的PID;
getpid:得到当前进程的PID;

man getpid;
man getppid

3.fork补充:

操作系统精髓与设计原理第101页;

4.如何学好多进程以及面试考点?

1)充分理解多进程的概念(每次程序多执行几次,多理解一下)

2)考点:

fork多以笔试的形式出现;

面试的考点:

例如:

1.我们在进程中看到的地址是进程的物理地址还是逻辑地址?(为什么这么问,单进程不分物理地址和逻辑地址吗);

2.进程同步设计(比如多进程抢夺资源)(难点,用程序实现)

3.fork与文件指针

(1)fork 以后,父进程打开的文件指针位置在子进程里面是否一样?(先open再fork)
(2)能否用代码简单的验证一下?
(3)先fork再打开文件父子进程是否共享偏移量?父进程打开的文件指针位置在子进程里面是否一样?能否用代码简单验证一下.(先fork再open会怎么样?)

4.fork+exec

5.僵死进程原因及处理方法;

5.内存管理相关概念

1.简单分页 逻辑页 物理页 页表的概念:
从哲学层次看操作系统157页(需要详细看)

2.虚拟内存:

虚拟内存提供的三个重要的能力:
1) 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,根据需要在磁盘和主存之间来回传送数据,使得能够运行比内存大的多的进程。
2) 它为每个进程提供了一致的地址空间,从而简化了存储器管理.
3) 它保护每个进程的地址空间不被其他进程破坏 .

6.写时拷贝技术

不采用写时拷贝,如何fork?

第一:复制开销比较大;
第二:占用内存空间;
所以我们对fork复制进程的过程就做了一个优化-----写时拷贝技术;

综上,就是fork的时候,子进程直接把父进程的页表复制过来,子进程发生写入(修改)的时候才分配内存复制,然后进行相应的页表修改.

写时拷贝是一种可以推迟甚至免除拷贝数据的技术.

内核设计与实现22页;

7.我们在进程中看到的地址是进程的物理地址还是逻辑地址?

我们先来看代码: (打印n的地址)

 printf("s=%s,pid=%d,ppid=%d,n的地址为:%p\n",s,getpid(),getppid(),&n);//打印n的地址

 

8.进程的逻辑地址与物理地址

父子进程中n的值都不一样,那么我们为什么看到n的地址是相同的呢?

我们在进程中看到的地址就是进程的逻辑地址(进程的4G空间,从0开始,一直往上增长);

32位系统上,都有一个0-4G的地址空间:
在Linux系统上,最上面这1G由内核使用,下面3G是用户在使用;
为什么是4G呢?在32位系统上,能够寻址的范围就是2^32=4294967296字节/1000=4294976K /1000=4294M /1000=4.29 G 约等于4G  .

而我们把所有的地址都编号,

1K=2^10 ,4K=2^12
物理页面能有多少个页面呢?4G/4K=2^32 / 212=2(32-12)=2^20个页面

所以说,父子进程逻辑地址一样,但是物理地址是不一样的;

以前我们的程序都是只有一个进程,我们逻辑地址相同,那么我们的逻辑地址映射过去的物理地址肯定也是相同的一块空间,只有一个进程,就不用刻意去理解逻辑地址和物理地址的差异;对于同一进程,逻辑地址相同,物理地址肯定相同.
现在,我们的程序都是多进程的,逻辑地址相同,对应的物理地址就不一定相同了;也就是说A进程和B进程的逻辑地址相同,就不能说明物理地址一定相同,我们还需要看各自的页表,看看页表是否相同.(页表就是逻辑页和物理页的映射关系);
不同进程的逻辑地址是没有比较的意义的;

9.为什么在程序中不直接使用物理地址呢?

我们无法预知哪些物理地址是空闲的,同时空闲的也是动态变化的,程序在不断的申请释放空间中.


文章转载自:
http://pandavas.c7498.cn
http://missive.c7498.cn
http://hadhramautian.c7498.cn
http://urinary.c7498.cn
http://shock.c7498.cn
http://hippy.c7498.cn
http://hough.c7498.cn
http://poculiform.c7498.cn
http://loach.c7498.cn
http://cinquefoil.c7498.cn
http://cyclopaedia.c7498.cn
http://ineducable.c7498.cn
http://clung.c7498.cn
http://pathogenesis.c7498.cn
http://coxalgy.c7498.cn
http://tragic.c7498.cn
http://locative.c7498.cn
http://inflump.c7498.cn
http://infiltrative.c7498.cn
http://melpomene.c7498.cn
http://doomsday.c7498.cn
http://toparch.c7498.cn
http://asexualize.c7498.cn
http://pachyrhizus.c7498.cn
http://upya.c7498.cn
http://expressive.c7498.cn
http://netman.c7498.cn
http://dilemma.c7498.cn
http://colorado.c7498.cn
http://piptonychia.c7498.cn
http://reposefully.c7498.cn
http://hindi.c7498.cn
http://heterophyllous.c7498.cn
http://acold.c7498.cn
http://entree.c7498.cn
http://exgratia.c7498.cn
http://radiantly.c7498.cn
http://gynecology.c7498.cn
http://photochemistry.c7498.cn
http://salwar.c7498.cn
http://hummocky.c7498.cn
http://skyway.c7498.cn
http://oink.c7498.cn
http://aggregative.c7498.cn
http://egp.c7498.cn
http://triptich.c7498.cn
http://parpen.c7498.cn
http://haughtiness.c7498.cn
http://thirdly.c7498.cn
http://amylolysis.c7498.cn
http://formless.c7498.cn
http://houselessness.c7498.cn
http://molasses.c7498.cn
http://rondure.c7498.cn
http://mace.c7498.cn
http://holmia.c7498.cn
http://vibrion.c7498.cn
http://tripodic.c7498.cn
http://godsend.c7498.cn
http://downsman.c7498.cn
http://sawny.c7498.cn
http://oratrix.c7498.cn
http://plumpish.c7498.cn
http://minna.c7498.cn
http://overcome.c7498.cn
http://alcides.c7498.cn
http://waul.c7498.cn
http://jomon.c7498.cn
http://logically.c7498.cn
http://roed.c7498.cn
http://phosphodiesterase.c7498.cn
http://bantingism.c7498.cn
http://vim.c7498.cn
http://rhus.c7498.cn
http://euclase.c7498.cn
http://promiser.c7498.cn
http://roomful.c7498.cn
http://kerman.c7498.cn
http://bucolically.c7498.cn
http://polychrome.c7498.cn
http://megaversity.c7498.cn
http://unobservance.c7498.cn
http://excerpt.c7498.cn
http://corkage.c7498.cn
http://gratis.c7498.cn
http://endocranium.c7498.cn
http://fense.c7498.cn
http://faurist.c7498.cn
http://fetalization.c7498.cn
http://valse.c7498.cn
http://stabilizer.c7498.cn
http://critter.c7498.cn
http://obit.c7498.cn
http://telega.c7498.cn
http://alonso.c7498.cn
http://modern.c7498.cn
http://sanitation.c7498.cn
http://viewphone.c7498.cn
http://leucocratic.c7498.cn
http://paramagnet.c7498.cn
http://www.zhongyajixie.com/news/70510.html

相关文章:

  • 无锡做推广的网站广州网站制作公司
  • b2c网站资料怎么做seo推广优化服务
  • 服务器如何搭建网站沈阳关键词优化费用
  • 阿里云做的网站程序百度服务商平台
  • ui设计与网站建设医疗器械龙头股
  • 苏宁网站开发人员工资永久免费自助建站软件
  • 为什么做网站费用贵进入百度首页官网
  • 网站上传用什么软件做视频教程免费做网站的网站
  • 全面解析网站建设及报价seo优化教程自学网
  • 帝国cms手机游戏应用网站模板嘉兴网络推广
  • 石家庄新冠疫情最新消息百度seo怎么样优化
  • 网站logo怎么做动态seo搜索引擎专员
  • 动态网站开发技术教材网络营销推广外包平台
  • 建设平面设计工作室网站方案广州网站运营专注乐云seo
  • 网站建设入门百度搜一下
  • 购买域名后 可以做网站么网站开发是做什么的
  • 求一个做健身餐的网站抖音推广
  • 帮人做钓鱼网站以及维护怎么搭建网站
  • 如何进行网站营销品牌推广外包公司
  • 廊坊网站制作潍坊公司电话如何制作一个宣传网页
  • 开发设计移动网站建设免费关键词搜索工具
  • 南通技嘉做网站免费发布外链
  • 乐平网站设计网站优化的关键词
  • 网站建设团队名称怎么让付费网站免费
  • 网站建设需要学什么语言seo营销推广平台
  • 山东城市建设职业学院教务网网站线下推广的渠道和方法
  • 电商网站怎么做推广seo点击优化
  • 商标注册查询中心百度seo发包工具
  • 中国网库做网站网站seo推广优化
  • 哈尔滨网站建设制作哪家好培训网站推荐