Linux学习-什么是程序

“程序”究竟是指什么呢?

程序与程序(process & program)

程序(program):通常为 binary program,放置在存储媒体中(如硬盘、光盘、软盘、磁带中),为实体文件的型态存在;
程序(process):程序被触发后,运行者的权限与属性、程序的程序码与所需数据等都会被加载到内存中,操作系统并给予这个内存内的单元一个识别码(PID),可以说,程序就是一个正在运行中的程序。

子程序与父程序

一句话:子程序就是运行在父程序中的程序,子程序和父程序都是普通的程序(一条命令或者一个新的bash其实都是一个普通程序),子程序的(PPID)就是指父程序的(PID):
子程序与父程序

fork and exec: 程序呼叫流程

在 Linux 的程序呼叫通常成为 fork-and-exec 的流程!程序都会藉由父程序以复制(fork)的方式产生一个一模一样的子程序,然后被复制出来的子程序再以 exec 的方式来运行实际要进行的程序,最终成为一个子程序的存在。

一些概念

  • 服务(daemon):常驻内存程序就被成为服务,不过 daemon 这个单词的解释:守护进程更好理解吧!
  • 系统稳定性
    • win98:一个程序发生错误,系统直接重启
    • win2000:一个程序发生错误,操作系统直接杀死那个程序的进程,不影响其他运行中的程序,这么说 win2000 也不应该有死机的情况啊?难道是因为程序之间的相互依赖?
    • linux:你可以手动把发生错误的程序的进程杀掉,然后再重新运行它,更不会影响其他程序的运行,所以说:Linux 几乎不会死机。不明白为啥能直接得出这样的结论?
  • 将耗时的命令放入背景中运行的方法:cp file1 file2&。对,就是直接在命令后加上一个&