美文网首页
C语言-系统-进程

C语言-系统-进程

作者: 一叶之界 | 来源:发表于2017-02-07 16:04 被阅读0次

并发机制

  1. 和并发相关的关键术语
    1.临界区:是一段代码,在这段代码中进程将访问共享资源,当另一个进程已经在这段代码中运行时,这个进程就不能再这段代码中运行。
    2.死锁:两个或两个以上的进程因其中的每个进程都在等待其它的进程做完某些事情而不能继续执行,这样的情形叫做死锁。
    3.互斥:当一个进程在临界区访问共享资源时,其它进程不能进入该临界区访问任何共享资源,这种情形叫做互斥。
    4.竞争条件:多个线程或进程在读写一个共享数据时结果依赖于它们执行的相对时间,这种情形叫做竞争。
    5.饥饿:是指一个可运行的进程尽管能继续执行,当被调度器无限制的忽略,而不能被调度执行的情况。

进程

一个正在执行的程序,或一个正在计算机上执行的程序实例,或能分配给处理器并由处理器执行的实例等,都可以称之为进程。它主要用于并行多任务,使程序更健壮,或者可以直接利用自己已有的其他程序。

// 进程的一些常用命令:
./r &:表示将程序转换到后台运行
ps:可以查看用户后台运行程序
ps -A: 可以查看系统和用户后台运行的程序
kill -9 PID(进程ID):中断后天程序的运行
  1. 进程五状态模式:
    运行态:该进程正在执行;
    就绪态:做好执行的准备,若有机会就会执行;
    阻塞态:进程在某些事件发生前不能执行;
    新建态:刚刚创建的进程,操作系统还没有将它加入到可执行进程中,通常是进程控制块已经创建但喊没有加载到主存中的新进程;
    退出态:操作系统从可执行进程中释放的进程,或者是因为它自身停止了,或者是因为某种原因而被取消。
  2. 进程结束方式:
    1.正常结束
    2.自杀:exit,return
    3.他杀:kill -9 pid;
    4.意外:段错误,abort实现核心已转储
  3. 进程控制结构
    操作系统在管理和控制进程时,首先必须知道进程的位置;然后,它必须知道在管理时所必需的进程属性(进程ID、进程状态)。
    进程控制块:一个进程至少包括足够的内存空间,以保存该进程的程序和数据;此外,程序的执行通常涉及到用于跟踪过程调用和过程间参数传递的栈。最后,与每个进程相关的还有操作系统用于控制精华才能的许多属性,通常,属性的集合称为进程控制块。
    进程控制块信息可以分为三类:
1.进程标识号:每一个进程分配了一个唯一的数字标识号;
2.进程状态信息:包括处理器的寄存器的内容;
3.进程控制信息操作系统控制和协调各种活动进程所需要的额外信息。

进程控制块的作用:它是操作系统中重要的数据结构。每个进程控制块包含操作系统所需要的关于进程的所有信息。实际上,操作系统中的每个模块,包括哪些涉及到调度、资源分配、中断处理、性能监控和分析的模块,都可能读取和修改它们。换而言之,资源控制块集合定义了操作系统的状态。

  1. 进程ID
    进程ID是一个16位的数字,有Linux在创建进程的时候自动依次分配;每个进程都有一个父进程(除了特殊的init进程)
    getpid() 和 getppid():
    头文件:#include <sys/types.h>/<unistd.h>
    函数的一般形式:
       pid_t getpid(void); // 获取当前进程的进程ID号
       pid_t getppid(void); // 获取当前进程的父进程的进程ID号
// 案例:
#include <sys/types.h>
#include <unistd.h>
int main()
{
    printf("The parent process ID is %d\n", (int)getppid());
    printf("The process ID is %d\n", (int)getpid());
    return 0;
}
  1. 查看进程
    ps:可以查看用户后台运行的程序,即进程ID号
ps命令.png

ps -A:可以查看系统和用户后台运行的程序,即进程ID号

ps -A命令.png

相关文章

  • C语言-系统-进程

    并发机制 和并发相关的关键术语1.临界区:是一段代码,在这段代码中进程将访问共享资源,当另一个进程已经在这段代码中...

  • C语言-系统-进程的创建

    使用 system C标准库中的system 函数提供了一种调用其他程序的简单方法,利用system 函数调用程序...

  • 操作系统第二次上机实验-进程通信

    实验题目:进程通信 实验目的 熟练使用 Linux 的 C 语言开发环境 掌握 Linux 操作系统下的并发进程间...

  • 随想:人生如同进程

    人生如同操作系统里的进程。 你无法选择你的父进程,也无法设置初始值。你没有选择编写你的语言:汇编、C、C++、Py...

  • Java--线程

    线程是什么?在计算机设计初期,并没有线程的概念,只有进程,linux系统下没有真正意义的线程,只有进程,c语言中的...

  • C语言结束进程

    最近做的一个项目中,运行结束时总会有进程残留,特地上网找了一份结束进程的代码,现在贴出来给大家参考: BOOL K...

  • Python Tricks —— 使用 Supervisor 控

    Supervisor 是一个 C/S 架构的进程控制系统,完全由 Python 语言编写。它允许用户监视和控制类 ...

  • 利用makefile实现c语言项目编译

    本周操作系统课的实验是用c语言实现10个进程调度算法。这个项目中有多个.h头文件和.c源文件,利用makefile...

  • 操作系统第一次上机实验-Linux系统下的进程创建

    本文使用Linux系统,语言使用C语言 1.如何在Linux系统下,编译运行C语言 1.1创建编写一个.c文件 如...

  • Supervisor快餐教程

    简介 Supervisor是一个C/S系统,允许用户控制类UNIX系统上的多个进程。Supervisord将进程作...

网友评论

      本文标题:C语言-系统-进程

      本文链接:https://www.haomeiwen.com/subject/nxzpittx.html