-
UNIX环境高级编程:进程管理和通信
所属栏目:[Unix] 日期:2016-09-28 热度:165
副标题#e# 进程和程序的区别: 进程: 程序的一次执行过程 动态过程,进程的状态属性会发生变化 程序:存放在磁盘上的指令、数据的有序集合 是个文件,可直观看到 程序program 静态的概念,本身不会发生变化。指令谁来执行,数据谁来访问?cpu! 但前提是cpu[详细]
-
UNIX环境高级编程:线程和fork
所属栏目:[Unix] 日期:2016-09-28 热度:84
当线程调用fork时,就为子进程创建了整个进程地址空间的副本。子进程通过继承整个地址空间的副本,也从父进程那里继承了所有互斥量、读写锁和条件变量的状态。如果父进程包含多个线程,子进程在fork返回以后,如果紧接着不是马上调用exec的话,就需要清理[详细]
-
UNIX环境高级编程:死锁
所属栏目:[Unix] 日期:2016-09-27 热度:160
操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进程协调、通信机制会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解[详细]
-
UNIX环境高级编程:线程和进程的区别
所属栏目:[Unix] 日期:2016-09-27 热度:95
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: (1)一个程序至少有一个进程,一个进程至少有一个线程。 (2)线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程[详细]
-
UNIX环境高级编程:线程同步之互斥锁、读写锁和条件变量
所属栏目:[Unix] 日期:2016-09-27 热度:188
副标题#e# 一、使用互斥锁 1、初始化互斥量 pthread_mutex_t mutex =PTHREAD_MUTEX_INITIALIZER;//静态初始化互斥量 int pthread_mutex_init(pthread_mutex_t*mutex,pthread_mutexattr_t*attr);//动态初始化互斥量 int pthread_mutex_destory(pthread_mutex[详细]
-
UNIX环境高级编程:线程限制
所属栏目:[Unix] 日期:2016-09-27 热度:159
如下图: 查看本栏目更多精彩内容:http://www.bianceng.cn/OS/unix/[详细]
-
UNIX环境高级编程:线程属性之并发度
所属栏目:[Unix] 日期:2016-09-27 热度:196
并发度控制着用户级线程可以映射的内核线程或进程的数目。如果操作系统的实现在内核级的线程和用户级的线程之间保持一对一的映射,那么改变并发度并不会有什么效果,因为所有的用户级线程都可能被调度到。但是,如果操作系统的实现让用户级线程到内核级线[详细]
-
UNIX环境高级编程:线程属性之分离属性
所属栏目:[Unix] 日期:2016-09-27 热度:181
说到线程的分离状态,我认为,之所以会有这个状态,是因为系统对某些线程的终止状态根本不感兴趣导致的。 我们知道,进程中的线程可以调用: int pthread_join(pthread_t tid, void **rval_ptr); 来等待某个线程的终止,获得该线程的终止状态,并收回所占[详细]
-
UNIX环境高级编程:互斥量属性
所属栏目:[Unix] 日期:2016-09-27 热度:192
副标题#e# 互斥量具有一些属性,通过修改这些属性可以控制锁的一些行为。缺省的互斥锁属性及其值如下: pshared: PTHREAD_PROCESS_PRIVATE type: PTHREAD_MUTEX_DEFAULT protocol: PTHREAD_PRIO_NONE prioceiling: robustness: PTHREAD_MUTEX_STALLED_[详细]
-
UNIX环境高级编程:线程私有数据
所属栏目:[Unix] 日期:2016-09-27 热度:61
副标题#e# 线程私有数据(Thread-specific data,TSD):存储和查询与某个线程相关数据的一种机制。 在进程内的所有线程都共享相同的地址空间,即意味着任何声明为静态或外部变量,或在进程堆声明的变量,都可以被进程内所有的线程读写。 一个线程真正拥有的[详细]
-
UNIX环境高级编程:System V 共享内存区
所属栏目:[Unix] 日期:2016-09-27 热度:172
副标题#e# 共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存[详细]
-
UNIX环境高级编程:存储映射I/O(mmap函数)
所属栏目:[Unix] 日期:2016-09-27 热度:131
副标题#e# 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共[详细]
-
UNIX环境高级编程:记录上锁(fcntl函数)以及死锁检测
所属栏目:[Unix] 日期:2016-09-27 热度:61
副标题#e# 一、记录锁 record locking 功能:当一个进程正在读或修改文件的某个部分时,它可以阻止其它进程修改同一文件区。 字节范围锁 byte-range locking 二、历史 flock函数,可以锁整个文件,不能锁文件中的一部分。 fcntl函数,增加了记录锁的功能。[详细]
-
UNIX环境高级编程:非阻塞设置
所属栏目:[Unix] 日期:2016-09-27 热度:122
非阻塞I/O使我们可以调用open、read和write这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成, 则调用立即出错返回,表示该操作如继续执行将阻塞。 对于一个给定的描述符有两种方法对其指定非阻塞: (1)如果调用open获得描述符,则可指定[详细]
-
UNIX环境高级编程:select、poll和epoll
所属栏目:[Unix] 日期:2016-09-27 热度:131
一、select select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它所剩不多的优点之一。 select的一个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,不过可以通过修改宏定义[详细]
-
UNIX环境高级编程:epoll函数使用详解
所属栏目:[Unix] 日期:2016-09-27 热度:57
副标题#e# epoll - I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为[详细]
-
UNIX环境高级编程:IPC总结
所属栏目:[Unix] 日期:2016-09-27 热度:167
副标题#e# IPC主要包括:管道,消息队列,信号量,共享内存, 套接字(SOCKET)。 一、IPC对象的持久性 每种IPC机制都会借助一种数据结构,这种数据结构的实例称为该IPC机制的对象(相应的,用于同步互斥的数据结构的实体也可以称为该机制的对象)。理清IPC对[详细]
-
UNIX环境高级编程:主线程与子线程的退出关系
所属栏目:[Unix] 日期:2016-09-27 热度:156
副标题#e# 我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。 1、 主线程等待新线程先结束退出,主线程后退出。正常执行。 示例代码: #include stdio.h #include stdlib.h #include pthread.h #[详细]
-
UNIX环境高级编程:pthread_create的问题
所属栏目:[Unix] 日期:2016-09-27 热度:78
副标题#e# linux 下常用的创建多线程函数pthread_create(pthread_t * thread , pthread_attr_t * attr , void *(*start_routine)(void*) , void *args); 其中第一个参数用来保存线程信息,第二个参数指新线程的运行属性,可以设置为NULL,第三个参数为自定[详细]
-
UNIX环境高级编程:线程同步之互斥量
所属栏目:[Unix] 日期:2016-09-27 热度:121
互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程。当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步。 互斥量,从字面上就可以知道是相互排斥的意思,它是最基本的同步工具,用[详细]
-
Unix系统sar命令详解
所属栏目:[Unix] 日期:2016-09-27 热度:91
副标题#e# 在使用UNIX操作系统的过程中,我们常常会用到各种各样的问题,比如系统运行速度突然变慢,系统容易死机或者主机所带的终端常出现死机,这时我们常常猜测,是硬盘空间太小,还是内存不足?I/O出现瓶颈,或者是系统的核心参数出了问题?这时,我们[详细]
-
Unix系统stty命令用法详解
所属栏目:[Unix] 日期:2016-09-27 热度:150
副标题#e# UNIX系统的命令很多,下面讲解stty. 该命令是一个用来改变并打印终端行设置的常用命令。 1、stty(set tty,设置tty)命令用于检查和修改当前注册的终端的通信参数。 UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,可以通过stty命令对[详细]
-
solaris的硬盘安装过程
所属栏目:[Unix] 日期:2016-09-27 热度:91
1、分区简介:(以我的硬盘为例,只做参考) 第一主分区 10G C盘 FAT32格式 安装WINDOWS XP 第二主分区 15G 空闲未分配 准备留给Solaris10 扩展分区分为三个逻辑盘: D盘 24G FAT32格式 E盘 26G FAT32格式 F盘 3G FAT32格式 2、准备过程: 在E盘建一个Sola[详细]
-
Solaris中如何修改默认Shell
所属栏目:[Unix] 日期:2016-09-27 热度:75
Solaris 有很多方面都用这和以前不大一样,下面讲Solaris中Shell的一些问题和解决方法。 Solaris的默认Shell是sh,即命令行提示符为(root用户):# 而在用Linux命令行的提示符中既有用户名,还有主机名称以及当前路径的名称。这样可以给人一目了然的感觉[详细]
-
Solaris中如何更改系统语言
所属栏目:[Unix] 日期:2016-09-27 热度:130
在虚拟机上装了一个Solaris的系统, 不过用客户端进行连接的时候出现了乱码, google 了一下, 问题搞定了。 故整理一下,以后备用。 1、语言环境包括语言规范、地域、代码集和其它特征。简体中文 Solaris 操作环境包括下列语言环境: C--对英文 ASCII 环[详细]