现在的OS都引入了虚拟内存机制。我们说的内存空间,实际上虚拟内存空间,CPU执行PC指向的命令,PC指向的就是虚拟内存空间地址。虚拟内存机制只不过是OS为我们做了一层虚拟内存地址到物理内存地址的映射,我们不需要管具体是怎么映射的,直接用就完了。每个进程的虚拟地址空间都是一样的,所以A进程的0x300 ...
分类:
其他好文 时间:
2018-07-29 20:05:54
阅读次数:
155
多线程 基本概念 每个运行的程序就是一个进程,当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个进程。 进程的特性: 独立性:每一个进程都拥有自己的私有地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。 动态性:程序只是一个静态的指令集合,而 ...
分类:
编程语言 时间:
2018-07-22 00:09:43
阅读次数:
200
1.线程是进程中最小执行单元,多线程共享同一个进程的地址空间 2.Linux 内核调度的对象是线程,所以一个进程中多个线程参与操作操作系统统一调度 使用线程优点: <1>效率高 <2>线程之间通信比较简单(全局变量) 使用线程缺点: 安全性差 线程API 1.线程创建 int pthread_cre ...
分类:
编程语言 时间:
2018-07-13 15:09:01
阅读次数:
164
一、什么是多线程? 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 多线程:指在一个进程中存在多个线程,多个线程共享该进程的地址空间。 二、线程和进程的区别 1,线程共享创建它的进程的地址空间;进程有自己的地址空间。 2,线程可以直接访问其进程的 ...
分类:
编程语言 时间:
2018-07-10 21:29:13
阅读次数:
191
Posix共享内存有两种非亲缘进程间的共享内存方法:1). 使用内存映射文件,由open函数打开,再由mmap函数把返回的文件描述符映射到当前进程空间中的一个文件。2). 使用共享内存区对象,由shm_open打开一个 Posix IPC名字。再由mmap把返回的描述符映射到当前进程的地址空间。Po ...
分类:
系统相关 时间:
2018-06-25 22:54:02
阅读次数:
299
共享内存是最快最为高效的进程间通信方式,当共享内存映射到共享它的某个进程的地址空间后,进程间的数据传递就不再牵扯到内核,进程可以直接读取内核,不需要通过内核系统调用进行数据拷贝。一般使用情况,从共享内存中写入或读取数据的进程间需要做同步,例如通过信号量,互斥锁去同步。共享内存有System V 共享 ...
分类:
系统相关 时间:
2018-06-25 22:50:30
阅读次数:
245
fork()的作用就是创建一个该进程下的子进程,在其exit 或 exec之前,和他共享代码,以一个父进程的身份,完成以下工作: 1.分配标识符pid和PCB。 2.让子进程复制父进程的环境。 3.给子进程分配地址空间和资源。 4.复制父进程的地址空间信息。 有了子进程,所以才有了僵尸进程和孤儿进程 ...
分类:
系统相关 时间:
2018-05-27 18:31:59
阅读次数:
227
1.进程有两个组成部分,一个进程内核对象和一个地址空间。线程也有两个组成部分: 一个是线程的内核对象,操作系统用它管理线程。系统还用内核对象来存放线程统计信息的地方。 一个线程栈,用于维护线程执行时所需的所有函数参数和局部变量。 2.线程要在其进程的地址空间内执行代码和处理数据,假如一个进程上下文中 ...
分类:
编程语言 时间:
2018-03-29 19:07:28
阅读次数:
209
一、进程的概述以及Linux和Windows进程的区别?在**Linux**内核中,描述一个进程主要是task_struct,一个称为进程描述符的数据结构。这个数据结构很庞大,包含了内核管理一个进程所需的所有信息,描述了一个正在执行的进程,包括进程ID,它打开的文件,进程的地址空间,挂起的信号,进程的状态等等其他信息。Linux的线程机制和Windows等其他操作系统的很不一样,Linu
分类:
系统相关 时间:
2018-03-18 16:23:32
阅读次数:
217
转自:http://linuxperf.com/?p=116 在Linux系统上,进程运行分为用户态与内核态,进入内核态之后使用的是内核栈,作为基本的安全机制,用户程序不能直接访问内核栈,所以尽管内核栈属于进程的地址空间,但与用户栈是分开的。Linux的内核栈大小是固定的,从2.6.32-520开始 ...
分类:
其他好文 时间:
2018-03-14 12:44:54
阅读次数:
270