2012年7月4日
摘要: 多线程共享一个进程的地址空间虽然线程间通信容易进行,但是多线程同时访问共享对象时需要引入同步和互斥机制。同步指的是多个任务按照约定的顺序相互配合完成一件事情,dijkstra基于信号量的概念提出了一种同步机制。由信号量赖决定线程是继续运行还是阻塞等待。信号量代表某一类资源,其值表示系统中该资源的数量信号量是一个受保护的变量,智能通过三种操作来访问:初始化 P操作(申请资源),V操作(释放资源),信号量的值为非负整数P操作的含义: if(信号量的值大于0) { 申请资源的任务继续运行; 信号量的值减去1; } else { 申请资源的任务阻塞; }v操作的含义: if(没有... 阅读全文
posted @ 2012-07-04 21:48 孟浩依然 阅读(9029) 评论(0) 推荐(0) 编辑
摘要: 系统为每个用户进程创建一个task_struct 来描述该进程,该结构体包含了一个指针指向该进程的虚拟地址空间映射表。实际上task_struct和地址空间映射表一起用来表示一个进程。由于进程的地址空间是私有的,因此在进程间上下文切换时,系统开销比较大,为了提高系统的性能,许多操作系统规范里引入了轻量级进程的概念,即线程在同一个进程中创建的线程共享该进程的地址空间,Linux里同样用sask_struct来描述一个线程,线程和进程都参与统一的系统调度。通常线程是指共享相同地址空间的多个任务。使用线程的优势:大大提高了任务切换的效率,避免了额外的TLB&cache的刷新多线程通过第三方的 阅读全文
posted @ 2012-07-04 21:46 孟浩依然 阅读(434) 评论(0) 推荐(0) 编辑