操作系统笔记(五)线程管理

  • 进程回顾
  1. 资源分配的基本单位
  • 线程
  1. 系统调度的基本单位
  2. 进程可以包含多个线程。这些线程共享代码区,数据区和打开的文件。
  3. 每个线程有独立的线程上下文(program counter,寄存器和其他的状态信息)和
  4. 优势:1)responsiveness 2) 资源共享 3) 高效,创建快,context switch快 4)适合多处理器的架构。

  • 线程的实现
  1. 用户空间的用户线程 and  内核空间的内核线程
  2. 用户线程: 依赖于线程库来实现线程的创建、调度(节省时间,不用trap into os,调度算法可定制)和管理。但对于内核而言,多线程是不可见的。【缺点:系统调用阻塞;无法利用多处理器的优势】
  3. 内核线程:操作系统支持,内核实现线程的创建,调度和管理。
  • Linux线程创建例子:
  • #include <pthread.h>
    
    int sum;
    
    void* runner(void* arg);
    
    int main()
    {
      pthread_t tid;
      pthread_attr_t attr;
      
      // default attribute
      pthread_attr_init(&attr);
      // create thread
      pthread_create(&tid, &attr, runner, 82);
      // wait thread to exit
      pthread_join(tid, NULL);
      
      pfrintf("sum = %d \n", sum);   
    }
    
    
    void * runner(void* arg)
    {
      int i, upper = (int)arg;
      sum = 0;
      if(upper > 0)
      {
          for(i = 1; i <= upper; i++)
              sum+= i;
      }
    
       // exit
       pthread_exit(0);
    }

     

posted @ 2018-03-12 19:50  niuxu18  阅读(226)  评论(0)    收藏  举报