计算机基础
no_one码农
这个作者很懒,什么都没留下…
展开
-
关于数据库反范式设计的一些要点
前言在实际的开发应用中,我们常用的数据库设计是反范式的。原因是遵循三大范式的数据库设计常常带来一定的弊端,例如,加大开发的复杂度、带来一定的性能损耗。数据的三大范式·第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。·第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。·第三范式:任何非主属性不依赖于其它非主属性。也就...原创 2019-08-05 16:32:52 · 242 阅读 · 0 评论 -
TCP之四次挥手和timewait状态
为什么是四次挥手?因为TCP连接是双向的,所以在关闭连接的时候,两个方向各自都需要关闭。client先发送FIN告知对方我已经完成数据发送了,server回复ack来确定我知道了。这样一个流程,就关闭了client到server的发送信息通道。server此时已经知道接收不到client的数据了,但是还可以给它发送数据。如果server也没有啥数据要发送给对方了,server也会以FIN标...原创 2019-09-20 08:55:11 · 329 阅读 · 0 评论 -
进程和线程的区别
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度的基本单位在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一进程中的线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。所处环境:在操作系统中能同时运行多个进程;而在同一个进程中有多个线程同时执行...原创 2019-09-20 09:05:24 · 110 阅读 · 0 评论 -
fork函数&exec函数
1.写时复制fork()会产生一个和父进程完全相同的子进程,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。2.fork复制的东西...原创 2019-07-26 18:03:07 · 277 阅读 · 0 评论 -
操作系统用户态和内核态
进程的执行状态1.用户态执行,表示进程正处于用户状态中执行;2.内核态执行,表示一个进程执行系统调用后,或中断/异常/陷入后,进入内核态。(陷入指令给用户提供接口,用于调用OS的服务)区别处于用户态执行时,进程所能访问的内存空间受到限制,其所占有的处理机是可被抢占的;而处于核心态执行中的进程,则能访问所有的内存空间,且所占用的处理机是不允许被抢占的。两种指令1.特权指令...原创 2019-07-26 18:01:27 · 495 阅读 · 0 评论 -
线程切换与进程切换以及开销
1.前言 为了更好的了解上下文切换,需要我们了解虚拟内存的概念。 虚拟内存是操作系统为每个进程提供的一种抽象,每个进程都有属于自己的、私有的、地址连续的虚拟内存,当然我们知道最终进程的数据及代码必然要放到物理内存上,那么必须有某种机制能记住虚拟地址空间中的某个数据被放到了哪个物理内存地址上,这就是所谓的地址空间映射,也就是虚拟内存地址与物理内存地址的映射关系,那么操作系...原创 2019-07-26 17:42:45 · 7140 阅读 · 2 评论 -
什么是孤儿进程和僵尸进程以及僵死进程的解决方案及原理
孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程所收养,并由init进程管理他们。僵尸进程1.概念当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。如果父进程没有这么做的话,会产生什么后果呢?此时,子进程虽然已经退出了,但是在系统进程表中还为它保留了一些退出...原创 2019-07-26 16:06:54 · 1250 阅读 · 0 评论